请问JTextField跟KeyListener相关问题.

heyipomoea 2013-01-05 10:38:24

小弟想做一个温度转换的小程式(摄氏转华氏),使用到JtextField跟KeyListener,问题是我的KeyListener没有实现动作出来...,不知道是缺少了什么,问题点我有注解起来可以麻烦大大帮我解答吗?非常感谢

package Book;
import java.awt.event.*;
import javax.swing.*;

class CTemperature extends JFrame implements KeyListener {
private JTextField txtCelsius, txtFahrenheit;
private JLabel lblCelsius, lblFahrenheit;

CTemperature(){
lblCelsius = new JLabel("摄氏温度(C)");
lblFahrenheit = new JLabel("华氏温度(F)");
txtCelsius = new JTextField("0");
txtFahrenheit = new JTextField("0");
lblCelsius.setBounds(10, 20, 100, 20); add(lblCelsius);
lblFahrenheit.setBounds(10, 40, 100, 20); add(lblFahrenheit);
txtCelsius.setBounds(100, 20, 100, 20); add(txtCelsius);
txtFahrenheit.setBounds(100, 40, 100, 20); add(txtFahrenheit);
txtFahrenheit.setEditable(false);

setTitle("温标转换"); setLayout(null);
setBounds(100, 100, 220, 120); setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setFocusable(true);
}
@Override
public void keyTyped(KeyEvent e) { //<==问题点,按下Enter键即可将摄氏转成华氏
int celsius, fahrenheit;
String a;
if(e.getKeyCode() == KeyEvent.VK_ENTER){
celsius = Integer.parseInt(txtCelsius.getText());
fahrenheit = Integer.parseInt(txtFahrenheit.getText());
fahrenheit = (celsius*9)/5+32;
a = Integer.toString(fahrenheit);
txtFahrenheit.setText(a);
}
}

@Override
public void keyPressed(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
}

public class Patient {
public static void main(String[] args){
CTemperature temp = new CTemperature();
}
}
...全文
208 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
raistlic 2013-01-07
  • 打赏
  • 举报
回复
一般是实现 keyReleased, 要给你的 JTextField 注册: jtextfield.addKeyListener(...); 然后另外两个方法里的 throw new UnsupportedOperationException("Not supported yet."); 一定要去掉。
yongger520 2013-01-06
  • 打赏
  • 举报
回复
keyReleased keyPressed 应该都可以
JavaMan 2013-01-05
  • 打赏
  • 举报
回复
引用 2 楼 nmyangym 的回复:
另外,把计算和显示代码放在方法keyReleased()里 Java code?1234567891011121314151617181920212223 @Override public void keyTyped(KeyEvent e) { //不在这判断。 } @Override ……
nmyangym 2013-01-05
  • 打赏
  • 举报
回复
另外,把计算和显示代码放在方法keyReleased()里
        @Override
        public void keyTyped(KeyEvent e) {    //不在这判断。

        }
  
        @Override
        public void keyPressed(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
  
        @Override
        public void keyReleased(KeyEvent e) {//在这处理。
            int celsius, fahrenheit;
            String a;
            if(e.getKeyCode() == KeyEvent.VK_ENTER){
                celsius = Integer.parseInt(txtCelsius.getText());
                fahrenheit = Integer.parseInt(txtFahrenheit.getText());
                fahrenheit = (celsius*9)/5+32;
                a = Integer.toString(fahrenheit);
                txtFahrenheit.setText(a);
            }
            //throw new UnsupportedOperationException("Not supported yet.");
        }
danis12315 2013-01-05
  • 打赏
  • 举报
回复
没有给组件注册你的keylistener

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧