首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EDT诉听者

EDT诉听者
EN

Stack Overflow用户
提问于 2013-03-01 02:36:41
回答 1查看 145关注 0票数 0

好吧,我知道我刚刚问了一个类似的问题,但是我试着简化它,所以我用了一个看起来很糟糕的例子,一个我没有想到的问题,从而得到了没有解决我问题的答案。

我有这样的设置:

我在美国东部时间有个方法。它在一堆JTextAreas中循环,并删除空的。

那有什么可抓的?

每次删除JTextArea时,都会触发一个侦听器,然后在视觉上更新GUI (将所有可视对象拉到JTextArea下面)。

那会发生什么?在执行循环时,JTextAreas不是视觉上被删除的,而是添加到EDT (我猜是这样),然后在循环完成后立即全部删除。然后,所有的侦听器都会同时触发并破坏整个GUI。

由于所有内容都是在EDT上运行的,所以我希望代码能够这样运行:

  • 起动周期
  • 找到一个空的JTextArea
  • 完全删除空的JTextArea ->触发侦听器
    • 在侦听器中执行代码

  • 继续循环
  • 查找下一个空的JTextArea
  • 冲洗并重复,直到循环结束。

我怎么能强迫我的程序这样做呢?

我是否应该创建一个搜索空白JTextAreas的新线程,并在invokeLater(new ())中执行删除操作?进行搜索的实际代码实际上不是CPU全神贯注的,它只运行于arrayList of JTextAreas并检查为getText().equals(""),所以我并不认为这是必要的.

EN

回答 1

Stack Overflow用户

发布于 2013-03-01 02:51:51

删除单个文本区域。确定是否有更多要删除的内容,如果需要删除,则使用SwingUtilities.invokeLater()将任务排队,该任务将返回到当前代码中。重复,直到所有文本区域被移除。

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

https://stackoverflow.com/questions/15149531

复制
相关文章

相似问题

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