正如我所说,我有一个java桌面应用程序。该接口包含一个JList,我在一些我实现的自定义监听器中修改了该列表的内容。
其中一个侦听器遍历列表中的所有项目并执行一些可能需要一段时间的操作。我想向用户显示我目前所在的项目。对于初学者,我只是尝试遍历列表中的元素,只是设置所选索引,然后调用repaint(我为每个项目执行这两个操作)。发生的事情是,在此迭代期间接口没有变化,直到最后一个项目被标记为已选中。
有没有人知道为什么会发生这种情况以及如何在A JList中显示选择的变化?
谢谢你, 米哈埃拉
答案 0 :(得分:1)
您似乎在负责更新GUI的同一个线程中执行耗时的操作(Event Dispatching Thread)。您的应用程序会冻结,直到操作完成。
请查看Threads and Swing以了解问题,并在Using a Swing Worker Thread查看有关如何解决此问题的示例。
答案 1 :(得分:1)
对于需要了解摆动并发性的人,我的情况如下,我认为以下链接也有很大帮助: Concurrency in Swing