在KeyListener的文本字段不点火时preSS进入 [英] KeyListener in Textfield not firing when press enter

查看:172
本文介绍了在KeyListener的文本字段不点火时preSS进入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个程序,它可以在Java转换到华氏摄氏度。在节目我有2个标签和1文本字段输入。我想使转换温度,当用户键入温度和presses <大骨节病>输入。要做到这一点,我添加了一个按键侦听到我的文本字段,但它不工作。当我preSS <大骨节病>输入监听器不火的。

I'm trying to make a program that can converts fahrenheit to celcius in java. In program i have 2 Labels and 1 TextField for input. I want to make convert temperature when user types the temperature and presses Enter. To do that, i added a key listener to my textfield but it doesn't work. When i press Enter listener don't fire at all.

这是我的code。

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的,但我需要用匿名类来做到这一点。如果没有匿名类它<大骨节病>输入闪光。

It works with ActionListener but i need to do it with anonymous class. Without anonymous class it fires with Enter.

推荐答案

尝试e.getKey code()而不是e.getKeyChar()。恒KeyEvent.VK_ENTER是一个int,而不是一个字符。

Try e.getKeyCode() instead of e.getKeyChar(). The constant KeyEvent.VK_ENTER is an int, not a char.

在换句话说:

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

而不是

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

这篇关于在KeyListener的文本字段不点火时preSS进入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆