gpt4 book ai didi

java Swing监听器: components listening at each others

转载 作者:行者123 更新时间:2023-12-02 07:41:23 25 4
gpt4 key购买 nike

我想编写两个 JList(类别和项目)。当我单击一个类别时,它应该选择该类别的所有项目,当我单击一个项目时,它应该选择其类别。所以两者JList将有一个 ListSelectionListener互相倾听并改变选择。

我应该担心某种“循环”吗?有没有办法知道事件已被消耗?人们如何应对这种情况?

谢谢

最佳答案

正如您所想象的,每次在 listA 上进行选择时,您都会触发 ListSelectionEventlistA 的监听器上触发,它的工作是在 listB 中找到所有合适的项目来选择。然后在 listB 上强制选择将触发 listB 监听器处理的事件。这将反过来强制选择 listA。仅仅使用两个监听器并不能解决问题。

我看到两个选项:

1 - 使用单个监听器。此监听器需要使用 ListSelectionEvent 上的 getSource 方法来测试事件源。如果源是 listB,请从 listA 的监听器列表中删除您的监听器,强制选择 listA,然后读取。

list1.removeListSelectionListener(this);
list1.setSelectedIndex(e.getFirstIndex()); //this would have to be played with to allow for intervals
list1.addListSelectionListener(this);`

2 - 使用两个监听器,但是为了避免循环,您需要在尝试选择该项目之前测试该项目是否已被选择。如果已经选择,请勿重新选择。

关于java Swing监听器: components listening at each others,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705040/

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