gpt4 book ai didi

java - ItemListener.itemStateChanged(ItemEvent e)

转载 作者:行者123 更新时间:2023-12-01 15:13:42 26 4
gpt4 key购买 nike

这个API有什么用?

几个月前我采用了它,当时我想我可以用它来捕获 ComboBox 中的键盘和鼠标操作,以便在用户做出选择后调用业务逻辑。作为一名开发人员,我只使用鼠标,幸福地无知,认为我的解决方案很好,直到测试人员参与并实际上尝试使用带有键盘的组合框。似乎 itemStateChanged() 对于更改项目状态的含义有一种非常反直觉的感觉(无论如何对我来说)。

当使用鼠标时,用户可以使用鼠标在下拉列表上移动,下拉列表会突出显示当前包含鼠标光标的组合框条目,但不会生成事件。当用户实际单击某个项目时会生成该事件。这是非常直观的,也是我所期望的。

另一方面,对于键盘,每次按下向下箭头都会导致生成 itemStateChanged 事件。这是违反直觉的,不是我想要的。我想仅当用户通过按 Enter 键发出选择信号时生成一个事件,表明已做出选择 - 即模拟鼠标单击,而不是鼠标移动。有没有办法让组合框以这种方式运行,或者我可以不使用 itemStateChanged 来捕获这些事件吗?

我还应该补充一点,ItemEvent 本身不包含任何可以帮助我消除这种情况的歧义的内容。

更新:好的,这就是问题的核心:如何使 Swing 将通过组合框的下拉列表的向下箭头视为与在下拉列表的元素之间移动鼠标相同? ItemListener 和 ActionListener 都将箭头键操作视为“选择”而不是导航。而我希望键盘类似于鼠标。我们的要求是让一切都可以用键盘操作。鼠标是一个很好的东西,但该应用程序的有经验的用户不会经常使用。

最佳答案

根据 Javadoc itemStateChanged(ItemEvent e)当用户选择或取消选择某个项目时调用。你所看到的行为是完全相同的。使用箭头键,每按下一个键,您就可以有效地从组合中选择(并同时取消选择)一个特定项目。

对于您的情况,我认为您应该考虑将业务逻辑实现为 JButton 的一部分作为用户选择的确认或尝试使用 FocusListener关于JComboBox并将您的逻辑作为 public void focusLost(FocusEvent e) 的一部分。 Here's a tutorial帮助您更好地了解FocusListener

关于java - ItemListener.itemStateChanged(ItemEvent e),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941068/

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