Java JLists中JButton侦听器事件的多个实例
我已经创建了一个对话框,其中显示了两个JList和一个按钮,该按钮从第二个JList中获取所选值并执行某些操作(例如输出所选值)。第二个JList中的值列表将根据从第一个JList中选择的值进行更新 当对话框最初显示时,按钮被禁用。当从第一个JList和第二个JList中选择一个值时,将启用该按钮,并向其添加所需的选择侦听器 问题在于,每次单击按钮时,输出消息的数量等于选择第二个JList值的时间。例如,如果我从第二个JList中选择一个值,然后我改变主意并选择另一个值,则单击按钮将输出消息两次。Java JLists中JButton侦听器事件的多个实例,java,swing,jlist,Java,Swing,Jlist,我已经创建了一个对话框,其中显示了两个JList和一个按钮,该按钮从第二个JList中获取所选值并执行某些操作(例如输出所选值)。第二个JList中的值列表将根据从第一个JList中选择的值进行更新 当对话框最初显示时,按钮被禁用。当从第一个JList和第二个JList中选择一个值时,将启用该按钮,并向其添加所需的选择侦听器 问题在于,每次单击按钮时,输出消息的数量等于选择第二个JList值的时间。例如,如果我从第二个JList中选择一个值,然后我改变主意并选择另一个值,则单击按钮将输出消息两次
有人知道防止这种事情发生的方法吗?是的:不要缓存选择,只处理第二个列表中的实际选择 如果可能的话,在按下按钮后张贴执行的代码。我猜,您有某种类型的集合(列表或队列),存储您在对话框上所做的所有选择,当您按下按钮时,每个存储的选择都会被处理 这看起来像是一种预期行为,因为您通常不会意外地编写此代码;)
如果它是有意的,你只想消除重复,考虑使用<代码> SET>代码>而不是一个列表,因为<代码> SET>代码>只包含唯一的值。
是的:不要缓存选择,只需处理第二个列表中的实际选择。
如果可能的话,在按下按钮后张贴执行的代码。我猜,您有某种类型的集合(列表或队列),存储您在对话框上所做的所有选择,当您按下按钮时,每个存储的选择都会被处理 这看起来像是一种预期行为,因为您通常不会意外地编写此代码;)如果它是有意的,你只想消除重复,考虑使用<代码> SET>代码>而不是一个列表,因为<代码> SET>代码>只包含唯一的值。
< P>你的ListSoice侦听器应该检查<代码>(E.GETValueISCudioTebug()==false)否则,您将响应用户的所有选择,而不仅仅是最后一个选择。您的ListSelectionListener应该检查(例如getValueIsAdjusting()==false)
否则,您将响应用户的所有选择,而不仅仅是最后一个选择。是否每次启用按钮时都会向按钮添加ActionListener?是否每次启用按钮时都会向按钮添加ActionListener?该按钮的功能非常完美
它引发了两个事件
1> 所选内容将从第一项中删除
2> 对第二项进行选择
正如fbcocq所说,您应该检查getValueIsAdjusting()。看看吧,它会有帮助的。它能完美地完成它应该做的事情 它引发了两个事件 1> 所选内容将从第一项中删除 2> 对第二项进行选择 正如fbcocq所说,您应该检查getValueIsAdjusting()。退房,会有帮助的