代码之家  ›  专栏  ›  技术社区  ›  Alex B

如何在JComboBox中输入时触发Java Swing InputVerifier(actionPerformed)?

  •  1
  • Alex B  · 技术社区  · 14 年前

    我有个秋千 JComboBox 带着一个 InputVerifier 设置正确。

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

    如果我在字段中键入“cat”并点击tab,我的 输入验证器 触发并将值重置为“0”。

    如果我键入“cat”并按回车键,我的 输入验证器 actionPerformed . 我需要显式地调用我的 输入验证器 ?

    最好的模型是什么来验证我的观点 在选项卡上输入?似乎这是swing模型应该“免费”给我的东西。

    3 回复  |  直到 14 年前
        1
  •  4
  •   Basil Bourque    13 年前

    问题是“hit Tab”和“hit Enter”在JavaSwing中的含义是不同的。但这两个动作对你、我和用户来说都是一样的。

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

    有一个解决办法

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

    这种解决方法的好处是,您可以在一个地方找到所有的处理代码。缺点是,您仍然有以下麻烦:

        2
  •  1
  •   trashgod    14 年前

    这是预期的行为 InputVerifier :的 TAB 键尝试改变焦点,而 ENTER 键不存在。你可以绑住绳子 输入 不同操作的键,如教程中所述 How to Use Key Bindings . 另外,请考虑这篇内容丰富的文章 Key Bindings ,其中包括一个方便的实用程序。

        3
  •  1
  •   camickr    14 年前

    在ActionListener中,您可以尝试调用transferFocus()方法,该方法应等同于对文本字段进行制表。如果这不起作用,那么actionListener应该调用与InputVerifier相同的编辑代码。

    推荐文章