请问JTextField跟KeyListener相关问题.
小弟想做一个温度转换的小程式(摄氏转华氏),使用到JtextField跟KeyListener,问题是我的KeyListener没有实现动作出来...,不知道是缺少了什么,问题点我有注解起来可以麻烦大大帮我解答吗?非常感谢
package Book;--------------------编程问答-------------------- 没有给组件注册你的keylistener --------------------编程问答-------------------- 另外,把计算和显示代码放在方法keyReleased()里
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();
}
}
@Override--------------------编程问答-------------------- --------------------编程问答-------------------- keyReleased
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.");
}
keyPressed
应该都可以
--------------------编程问答--------------------
一般是实现 keyReleased,
要给你的 JTextField 注册: jtextfield.addKeyListener(...);
然后另外两个方法里的 throw new UnsupportedOperationException("Not supported yet."); 一定要去掉。
补充:Java , Java SE