我想编写两个JList (类别和项)。当我单击一个类别时,它应该选择该类别的所有项目,而当我单击一个项目时,它应该选择它的类别。因此,两个JList都将有一个ListSelectionListener相互监听并更改所选内容。
我应该担心某种“循环”吗?是否有一种方法来判断某个事件已经被消耗掉了?人们如何处理这种情况?
谢谢
发布于 2010-04-24 16:22:46
正如您想象的那样,每次在listA上进行选择时,您都会触发一个ListSelectionEvent,用于listA的侦听器,它的工作是在listB中查找要选择的所有适当项。在listB上强制选择将触发由listB侦听器处理的事件。这将反过来强制在listA上进行选择。仅仅使用两个侦听器并不能解决问题。
我认为有两种选择:
1-使用单一的侦听器。此侦听器将需要使用getSource方法在ListSelectionEvent上测试事件的源。如果源为listB,请从listA的listenerlist中删除侦听器,强制在listA上选择,然后强制readd。
list1.removeListSelectionListener(this);
list1.setSelectedIndex(e.getFirstIndex()); //this would have to be played with to allow for intervals
list1.addListSelectionListener(this);`2-使用两个侦听器,然而,为了避免循环,您需要测试项目是否已经被选中,然后尝试选择它。如果它已经被选中,不要重新选择它。
发布于 2010-04-24 15:44:44
看看Beans绑定API。这是教程 for NetBeans。
发布于 2010-04-24 15:48:44
两位听众怎样做才是好办法,别担心。只需确保只创建一次侦听器,而不是循环。
https://stackoverflow.com/questions/2705040
复制相似问题