相关疑难解决方法(0)

如何在Swing中暂时禁用事件监听器?

我有一个带有模型和视图的Swing应用程序.在视图(GUI)中有许多组件,每个组件映射到模型对象的某些属性并显示它的值.

现在有一些UI组件在UI中的值发生更改时会自动触发某些模型属性的更新.这需要我在UI中重新加载完整的模型.这样我就进入了一个无限的更新循环,因为UI中的每个模型重新加载都会触发另一个模型重新加载.

我有一个标志指示加载过程,我想用它来暂时禁止监听器通知,同时从模型中设置UI字段.所以我的问题是:

有没有办法在Swing中全局暂时禁用某些组件的侦听器而无需删除并重新连接它们?

java events swing event-dispatching

14
推荐指数
1
解决办法
3万
查看次数

我是否可以为JList设置所选项目而不向监听器抛出事件?

我正在使用一个查看器,它使用JList显示文档页面的缩略图.用户可以通过在JList中选择它或通过其他机制打开页面,例如在文本框中输入数字.

当使用后者替代时,我希望JList也选择页面.我使用setSelectedIndex()执行此操作,但这会触发一个事件,这会导致再次加载页面,就好像用户单击并选择了JList中的页面一样,这导致了一些问题.

我怎么看,索引应该以某种方式设置(可能在模型中),这样只有JList的UI更新,而不会触发索引已更改的事件.

这可能吗?或者有更好的方法来解决我的问题吗?

java events swing selection jlist

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

events ×2

java ×2

swing ×2

event-dispatching ×1

jlist ×1

selection ×1