我正在尝试在Java中制作一个程序,可以将华氏温度转换为摄氏温度。在程序中我有2个标签和1个输入用的文本框。我希望当用户输入温度并按下Enter键时,立即进行温度转换。为此,我在文本框中添加了一个按键监听器,但是它不起作用。当我按下Enter键时,监听器根本没有触发。
以下是我的代码:
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,但我需要使用匿名类来完成。如果没有匿名类,则会在Enter键按下时触发。
ActionListener
- 这就是它的设计目的 - 记住,对于每个平台,[Enter]并不总是“接受”键 ;) - MadProgrammerActionListener
将被触发。恰巧对于大多数平台来说,这是 [Enter] 键。这重要吗? - MadProgrammerKeyListener
对于您尝试实现的内容来说太低级了。如果您真的想要监视[Enter]键,那么您将不得不替换文本字段正在使用的键绑定。然而,这将改变应用程序在其他平台上的工作方式,因此需要使用ActionListener
。这允许外观和感觉决定在什么条件下触发ActionListener
。在大多数平台下,这是[Enter]键... - MadProgrammer