作者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
推 Mije:你JTextField沒有加Listener 01/05 20:57
→ Mije:txtCelsius.addKeyListener(this); 剩下還有一些bug自己想想 01/05 20:58
→ pugboy:我加上去還是出現UnsupportedOperationException例外... 01/05 21:55
→ pugboy:感謝Mije大大 我放在KeyPressed就行了 01/05 22:52
推 Mije:你另外兩個沒用的空著就好,不用算例外 01/06 00:55