首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JTextComponent更新同步

JTextComponent更新同步
EN

Stack Overflow用户
提问于 2014-10-22 22:24:49
回答 1查看 17关注 0票数 0

我有一个JEditorPane和一个JList。当用户在JList中选择一个元素时,将执行一个网站查询,并将结果HTML写入JEditorPane

但是,如果用户很快地滚动到JList ,则会出现一个问题,因为每次更改都启动一个新的查询,并且JEditorPane按可能错误的顺序更新(单个结果可能会花费不可预测的更长或更短的时间返回),并导致当前列表选择和JEditorPane不同步,这意味着列表选择现在显示错误的结果。

有什么办法确保这件事不会被搞砸吗?

我尝试创建更新JEditorPane synchronized (无效果)的方法,在启动查询时禁用JList (无效果),或在查询进行时使用Thread.sleep()暂停EDT (冻结gui)。这些解决办法都不令人满意。

gui需要保持灵活性,但绝不能像上面所描述的那样失去同步。

EN

回答 1

Stack Overflow用户

发布于 2014-10-22 22:38:53

可能有一种非常简洁的方法可以控制JEditorPane的加载过程,但为了简单起见,我可能会考虑使用javax.swing.Timer

基本上,当选择发生变化时,您将启动配置为短时间的(只运行一次) Timer (例如250毫秒或so...as )。

每次选择发生变化,计时器将被重新启动,从而防止计时器触发它的ActionListener.

一旦选择改变停止,计时器将被允许运行它的过程,触发ActionListener,这将允许您向JEditorPane提出请求

查看如何使用摆动计时器以获得更多想法,只需确保将它的repeats属性设置为false ;)

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

https://stackoverflow.com/questions/26518167

复制
相关文章

相似问题

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