Java 英里/公里转换器(事件驱动)

Java 英里/公里转换器(事件驱动),java,swing,jtextfield,keylistener,Java,Swing,Jtextfield,Keylistener,我需要创建一个显示英里和公里的JPanel。当您将数字输入其中一个时,它会使用Enter键将其转换为另一个 我不知道如何正确地让KeyListener执行转换。我不是在寻找答案,只是寻找一些指导或类似例子的链接。 谢谢 与向文本字段中添加KeyListeners(实际上没有那么好用)不同,您应该添加ActionListeners,就像将ActionListeners添加到按钮中一样。当您按enter键时,它们会被激活。您应该添加ActionListeners,就像您将ActionListener

我需要创建一个显示英里和公里的JPanel。当您将数字输入其中一个时,它会使用Enter键将其转换为另一个

我不知道如何正确地让KeyListener执行转换。我不是在寻找答案,只是寻找一些指导或类似例子的链接。 谢谢


与向文本字段中添加KeyListeners(实际上没有那么好用)不同,您应该添加ActionListeners,就像将ActionListeners添加到按钮中一样。当您按enter键时,它们会被激活。

您应该添加ActionListeners,就像您将ActionListeners添加到按钮一样,而不是将KeyListeners添加到文本字段(实际上并不太好)。当您按enter键时,它们将被激活。

而不是使用您可以使用的KeyListener

KeyListener不适合您所做的事情,因为当您使用KeyListener get executed时,每个键都会被键入、释放或按下

因此,如果使用KeyBinding,则将操作绑定到特定的键

最好的情况是,你不需要有焦点,也不需要专注。您可以使用这些JComponent常量

WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 
WHEN_FOCUSED 
WHEN_IN_FOCUSED_WINDOW 

相反,您可以使用KeyListener

KeyListener不适合您所做的事情,因为当您使用KeyListener get executed时,每个键都会被键入、释放或按下

因此,如果使用KeyBinding,则将操作绑定到特定的键

最好的情况是,你不需要有焦点,也不需要专注。您可以使用这些JComponent常量

WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 
WHEN_FOCUSED 
WHEN_IN_FOCUSED_WINDOW 
发件人:jcpartri

你好!

此链接可能对您有所帮助。它也位于stackoverflow.com内。 你有没有理由为一个选择KeyListener,为另一个选择ActionListener? 下面的链接建议您改用keyReleased方法

发件人:jcpartri

你好!

此链接可能对您有所帮助。它也位于stackoverflow.com内。 你有没有理由为一个选择KeyListener,为另一个选择ActionListener? 下面的链接建议您改用keyReleased方法



顺便说一句,如果e.getKeyCode==KeyEvent.VK_输入;不执行任何操作,System.out.println43;S应为System.out.println42;:-我不确定如何将KeyEvent链接到ButtonListener类。我正在使用System.out查看它是否至少在文本字段中读取了Enter。我完全迷路了。如果我的代码到处都是,很抱歉。@user2616657,请阅读给出的答案。您不应该使用KeyEvent。您只需使用addActionListener方法将ButtonListener添加到文本字段中即可。非常感谢!我得到了工作和计算的键,但要让文本字段工作,我必须在actionPerformed区域中只有一个。我是否为其他文本字段计算创建了另一个执行的操作?如果e.getKeyCode==KeyEvent.VK_ENTER,请参见.BTW;不执行任何操作,System.out.println43;S应为System.out.println42;:-我不确定如何将KeyEvent链接到ButtonListener类。我正在使用System.out查看它是否至少在文本字段中读取了Enter。我完全迷路了。如果我的代码到处都是,很抱歉。@user2616657,请阅读给出的答案。您不应该使用KeyEvent。您只需使用addActionListener方法将ButtonListener添加到文本字段中即可。非常感谢!我得到了工作和计算的键,但要让文本字段工作,我必须在actionPerformed区域中只有一个。我是否为其他文本字段计算创建了另一个actionPerformed?另请参见.1了解actionListener,尝试建议使用KeyListener或actionListener。了解+1了解API的优势@在Azad中,文本字段被设计为使用ActionListener。无需为Enter键创建自己的键绑定。Enter键的键绑定将调用ActionListener.com,比如jtfMiles.addActionListenernewActionListener@camickr:谢谢你纠正我。我必须将我的注释改为而不是KeyListener.+1对于actionListener,请尝试使用建议来代替KeyListener或actionListener.+1,以利用API@在Azad中,文本字段被设计为使用ActionListener。无需为Enter键创建自己的键绑定。Enter键的键绑定将调用ActionListener.com,比如jtfMiles.addActionListenernewActionListener@camickr:谢谢你纠正我。我必须将注释改为而不是KeyListener。一般来说,使用键绑定是个不错的建议,但在这种情况下不行。JTextField已具有Enter键的键绑定。它将调用ActionListener。通常,使用键绑定是一个很好的建议,但在本例中不是。JTextField已具有Enter键的键绑定。它将调用ActionListener。我正在试着看哪一个可以工作。我会查看链接的,谢谢。我正在试着看哪一个会有用。我将查看链接,谢谢。
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT 
WHEN_FOCUSED 
WHEN_IN_FOCUSED_WINDOW