当用户选择已经在JComboBox
中选择的值时,我想防止触发事件。
例如,假设我有一个< code>JComboBox,它的模型有以下值:
当前选择的值为“Cat”。如果用户再次选择“Cat”,而“Cat”已经被选择,我想防止侦听器收到通知。
我试图通过在模型中的setSelectedItem(Object)
中添加检查来实现这一点。然而,这并没有奏效。
我的下一个假设是,如果我想要这个功能,我需要将jcombox
子类化,并覆盖它的setSelectedItem(对象)
,以及contentsChanged(ListDataEvent)
函数。
但是,鉴于contentsChanged(ListDataEvent)
的留档,我不太愿意覆盖它。因此,我对你们所有人的问题是:
有没有更好的方法来获得所需的功能,而不需要对JComboBox
进行子分类并重写其setSelectedItem(对象)
,以及contentsChanged(ListDataEvent)
函数?
我想防止当用户选择一个已经在JComboBox中选择的值时触发一个动作事件。
>
使用ItemListener,
将代码包装到 if (e.getStateChange() == ItemEvent.SELECTED) {
如图所示,在 Oracle 教程中进行了描述
例如
问题内容: 每当尝试从中进行选择时,我都试图触发一个事件。 我遇到的问题是没有明显的方法。 我尝试使用,但从未触发。 没有覆盖的模型,我没有想法。 如何通知有关 选择更改的通知? 编辑:我要道歉。事实证明,我使用的是行为不佳的子类,但由于你的回答是好的,因此我将保留该问题。 问题答案: 它应该响应,如下所示: 正确地指出了也可以。但是,你可能会得到 ,一个用于取消选择先前选择的项目,另一个用于选择
除了使用之外,是否有其他方法可以侦听已选择的单元格(即使是带有)的单元格)? 我有一个带有行和列侦听器的JTable。当选择已经选择的单元格时,两个侦听器都不会触发: 我的目标是打开/关闭电池。它是有效的,除了监听器在选择一个已经选择的单元格时不会触发之外,这是通过上面的SSCCE表示的。 似乎没有任何监听器可以连接到(或者它的模型/选择模型)来处理这个问题,除非我使用并手动管理Cooridate
这看起来很简单,但我没有找到答案。 我有一个基本的的值没有改变,我也希望知道用户选择了一些东西并重新触发整个处理。所以可能不是我想要使用的,但我没有找到该使用什么。 有一个基本的select标记和一些选项在里面,这是可能的吗?如果不是,实现这一目标的最佳方法可能是什么?(我懒惰的手指宁愿实现一个自定义的React下拉列表,仅作为最后的手段)。 谢谢你们!
我有一个表,其中有多个表项可用。其中,对于某些表项,设置了背景和前景色。 在选择彩色项目时,由于文本颜色为白色,文本很难阅读,因此,我需要将前面的颜色更改为默认颜色,即黑色。我是用选择侦听器完成的 成功地改变了颜色。 但是现在我正在选择任何其他没有着色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即白色。我不知道如何使用。 有人能帮忙吗?
我有一个具有2级层次结构的TreeView控件。如果选择了第二级的项目,并且用户单击了另一个项目,我需要询问他是否确定要移动到另一个项目。如果他的答案是“否”,我需要阻止选择另一个TreeViewItem。 我试着这样做: 以一种有效的方式。但是,问题是我得到了两次OnMouseDown事件:第一级项目和第二级项目。例如,对于这棵树:俄罗斯-莫斯科-皮特美国-纽约-波士顿如果我单击波士顿,我将获得
单击选择元素显示此警告: [违规]将非被动事件侦听器添加到滚动阻止“鼠标滚轮”事件。将事件处理程序标记为“被动”以使页面更加响应。 问题是,这也扩大了谷歌浏览器中HTML页面的高度。在Chrome版本59.0中测试。3071.86(官方版本)(64位)在firefox中不会出现这种情况。 简单代码:https://jsfiddle.net/gurigraphics/2399mnyb 如果自定义滚动