gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:21:53 24 4
gpt4 key购买 nike

我有一个 Swing JComboBox,其中 InputVerifier 设置正确。

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

如果我在字段中键入“cat”并点击 Tab,我的 InputVerifier 将触发并将值重置为“0”。

如果我键入“cat”并按回车键,我的 InputVerifier 永远不会从 actionPerformed 调用。我是否需要从 actionPerformed 显式调用我的 InputVerifier

在选项卡上验证我的 JComboBox 并输入的最佳模型是什么?看来这应该是 Swing 模特“免费”送给我的东西。

最佳答案

问题是“hit Tab”和“hit Enter”在 Java Swing 中有两种不同的含义。但这两个操作对你、我和用户来说意义相同。

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

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

有一个解决方法......

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

  • 扩展 InputVerifier (处理即将失去焦点的标签/点击)
  • 实现 ActionListener (在不离开字段的情况下处理按 Enter 键)

此变通办法的好处是您可以将处理代码全部放在一个地方。缺点是您仍然有以下麻烦:

关于java - 如何在 JComboBox(actionPerformed)中输入时触发 Java Swing InputVerifier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143251/

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