当前位置:编程学习 > JAVA >>

请问JTextField跟KeyListener相关问题.


小弟想做一个温度转换的小程式(摄氏转华氏),使用到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();
    }
}
--------------------编程问答-------------------- 没有给组件注册你的keylistener --------------------编程问答-------------------- 另外,把计算和显示代码放在方法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.");
        }
--------------------编程问答--------------------
引用 2 楼 nmyangym 的回复:
另外,把计算和显示代码放在方法keyReleased()里
Java code?1234567891011121314151617181920212223        @Override        public void keyTyped(KeyEvent e) {    //不在这判断。         }           @Override        ……
--------------------编程问答-------------------- keyReleased
keyPressed
应该都可以
--------------------编程问答--------------------
一般是实现 keyReleased,
要给你的 JTextField 注册:   jtextfield.addKeyListener(...);

然后另外两个方法里的 throw new UnsupportedOperationException("Not supported yet."); 一定要去掉。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,