我試圖製作一個程序,可以將華氏轉換爲java中的celcius。在程序中我有2個標籤和1個TextField輸入。我想在用戶輸入溫度時按下轉換溫度並按輸入。要做到這一點,我添加了一個關鍵偵聽器到我的文本字段,但它不起作用。當我按輸入聽衆根本不開火。Textfield中的KeyListener在按下輸入時未觸發
這是我的代碼。
public class TempConv extends JFrame{
private JLabel info;
private JLabel result;
private JTextField input;
private String outcome;
public TempConv(){
super("Temperature Converter");
setLayout(new BorderLayout());
info = new JLabel("Enter Fahrenheit Temperature");
add(info, BorderLayout.NORTH);
input = new JTextField(12);
add(input, BorderLayout.CENTER);
result = new JLabel("Temperature in Celcius is: " + outcome);
add(result, BorderLayout.SOUTH);
input.addKeyListener(
new KeyListener(){
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == KeyEvent.VK_ENTER){
outcome = input.getText();
}
}
}
);
}
public static void main(String[] args) {
TempConv ftc = new TempConv();
ftc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ftc.setLocationRelativeTo(null);
ftc.setSize(370, 100);
ftc.setVisible(true);
}
}
編輯:它與ActionListener的,但我需要用匿名類來做到這一點。如果沒有匿名課程,則會觸發輸入。
該事件被消耗越往上事件鏈,因此它永遠不會到達你,最好使用[鍵綁定(http://docs.oracle 。com/javase/tutorial/uiswing/misc/keybinding.html) - 實際上,爲你正在嘗試做的事情最好使用一個'ActionListener' - 這就是它的設計目的 - 記住,[Enter]並不總是「接受「每個平臺的關鍵;) – MadProgrammer
我被試圖使用動作監聽器。一切都很順利,直到我找不到如何檢查在ActionListener中是否按下Enter鍵。 – Miral
重要嗎?從獨立於平臺的角度來看,當用戶觸發該平臺的「接受」操作時,將觸發「ActionListener」。對於大多數平臺來說,這恰好是[Enter]鍵。 – MadProgrammer