gpt4 book ai didi

java - 按下回车键时文本字段中的 KeyListener 不触发

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:09 25 4
gpt4 key购买 nike

我正在尝试制作一个可以在 Java 中将华氏度转换为摄氏度的程序。在程序中,我有 2 个标签和 1 个 TextField 用于输入。我想在用户键入温度并按 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 触发。

最佳答案

尝试使用 e.getKeyCode() 而不是 e.getKeyChar()。常量 KeyEvent.VK_ENTER 是一个 int,而不是一个 char。

换句话说:

if(e.getKeyCode() == KeyEvent.VK_ENTER){
outcome = input.getText();
}

代替

if(e.getKeyChar() == KeyEvent.VK_ENTER){
outcome = input.getText();
}

关于java - 按下回车键时文本字段中的 KeyListener 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com