首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在enter in JComboBox (actionPerformed)中触发Java Swing InputVerifier?

如何在enter in JComboBox (actionPerformed)中触发Java Swing InputVerifier?
EN

Stack Overflow用户
提问于 2010-06-30 01:36:20
回答 3查看 5.1K关注 0票数 1

我有一个正确设置了InputVerifier的Swing JComboBox

我正在使用组合框设置一个整数。

如果我在字段中输入"cat“并按tab,我的InputVerifier将触发并重置值为"0”。

如果我输入"cat“并按回车键,actionPerformed永远不会调用我的InputVerifier。我需要从actionPerformed显式调用我的InputVerifier吗?

在tab和enter上验证我的JComboBox的最佳模式是什么?这似乎是swing模型应该“免费”提供给我的东西。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-23 06:46:37

问题是"hit Tab“和"hit Enter”在Java Swing中是两个不同的意思。但这两个动作对你、我和用户来说都意味着同样的事情。

Swing没有单一的机制来检测“用户何时完成数据输入”。相反,Swing关注的是“这个字段是否失去了键盘焦点”和“用户在字段内按回车键”的机制。

从语义上讲,从用户的角度来看,这两个动作的含义是相同的:“我完成了。这是我的输入。”但是,据我所知,Swing未能提供一种检测用户意图的方法。我和您一样对缺少这样的功能感到惊讶,因为这似乎是GUI中表单的最基本功能。我们需要但没有的是一个"dataEntered“事件。

有一个变通方法是…

在类似的上下文(JTextField而不是JComboBox)中,Sun/Oracle Java Tutorial提供了示例InputVerificationDemo,其中创建了一个类:

  • 扩展了 (用于处理将要成为焦点的地方的跳转/单击) (用于处理在不离开字段的情况下按下Enter键)

这个变通方法的好处是你可以在一个地方找到你的处理代码。缺点是你仍然会遇到这样的麻烦:

创建一个单独的class.

  • Instantiating,将该实例class.

  • Passing到您的小部件的addActionListener和JTextField方法(JTextField等)中。
票数 4
EN

Stack Overflow用户

发布于 2010-06-30 02:15:04

这是InputVerifier的预期行为:TAB键尝试改变焦点,而ENTER键不改变焦点。您可以将ENTER密钥绑定到不同的操作,如教程中所述。另外,请考虑信息丰富的文章,其中包含一个方便的实用程序。

票数 1
EN

Stack Overflow用户

发布于 2010-06-30 03:55:29

使用可编辑的组合框时,焦点放在用作组合框编辑器的JTextField上。您可以将ActionListener添加到此文本域。

在ActionListener中,您可以尝试调用transferFocus()方法,它应该等同于按to键切换文本字段。如果这不起作用,那么actionListener应该调用与InputVerifier相同的编辑代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3143251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档