小弟想做一个温度转换的小程式(摄氏转华氏),使用到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();
    }
}

解决方案 »

  1.   

    没有给组件注册你的keylistener
      

  2.   

    另外,把计算和显示代码放在方法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.");
            }
      

  3.   

    keyReleased
    keyPressed
    应该都可以
      

  4.   


    一般是实现 keyReleased,
    要给你的 JTextField 注册:   jtextfield.addKeyListener(...);然后另外两个方法里的 throw new UnsupportedOperationException("Not supported yet."); 一定要去掉。