首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java侦听器:组件彼此监听

问java侦听器:组件彼此监听
EN

Stack Overflow用户
提问于 2010-04-24 15:40:03
回答 4查看 862关注 0票数 3

我想编写两个JList (类别和项)。当我单击一个类别时,它应该选择该类别的所有项目,而当我单击一个项目时,它应该选择它的类别。因此,两个JList都将有一个ListSelectionListener相互监听并更改所选内容。

我应该担心某种“循环”吗?是否有一种方法来判断某个事件已经被消耗掉了?人们如何处理这种情况?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-24 16:22:46

正如您想象的那样,每次在listA上进行选择时,您都会触发一个ListSelectionEvent,用于listA的侦听器,它的工作是在listB中查找要选择的所有适当项。在listB上强制选择将触发由listB侦听器处理的事件。这将反过来强制在listA上进行选择。仅仅使用两个侦听器并不能解决问题。

我认为有两种选择:

1-使用单一的侦听器。此侦听器将需要使用getSource方法在ListSelectionEvent上测试事件的源。如果源为listB,请从listA的listenerlist中删除侦听器,强制在listA上选择,然后强制readd。

代码语言:javascript
复制
list1.removeListSelectionListener(this);
list1.setSelectedIndex(e.getFirstIndex()); //this would have to be played with to allow for intervals
list1.addListSelectionListener(this);`

2-使用两个侦听器,然而,为了避免循环,您需要测试项目是否已经被选中,然后尝试选择它。如果它已经被选中,不要重新选择它。

票数 1
EN

Stack Overflow用户

发布于 2010-04-24 15:44:44

看看Beans绑定API。这是教程 for NetBeans。

票数 0
EN

Stack Overflow用户

发布于 2010-04-24 15:48:44

两位听众怎样做才是好办法,别担心。只需确保只创建一次侦听器,而不是循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2705040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档