作者pugboy ()
看板java
标题[问题] 请问关於JTextField跟KeyListener
时间Sat Jan 5 20:47:16 2013
http://ppt.cc/Fbu9
如上图小弟想做一个温度转换的小程式(摄氏转华氏),
使用到JtextField跟KeyListener,
问题是我的KeyListener完全没有反应...,
(我也找了资料加上了txtCelsius.requestFocus();还是不行)
不知道是缺少了什麽,
问题点我有注解起来
可以麻烦大大帮我解答吗?
非常感谢
Code如下:
package Book;
import java.awt.event.*;
import javax.swing.*;
class CTemperature extends JFrame implements KeyListener {
private JTextField txtCelsius, txtFahrenheit;
private JLabel lblCelsius, lblFahrenheit;
CTemperature(){ //GUI介面设定
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);
txtCelsius.requestFocus(); //对JTextField Focus?
}
@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();
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.223.8
1F:推 Mije:你JTextField没有加Listener 01/05 20:57
2F:→ Mije:txtCelsius.addKeyListener(this); 剩下还有一些bug自己想想 01/05 20:58
3F:→ pugboy:我加上去还是出现UnsupportedOperationException例外... 01/05 21:55
4F:→ pugboy:感谢Mije大大 我放在KeyPressed就行了 01/05 22:52
5F:推 Mije:你另外两个没用的空着就好,不用算例外 01/06 00:55