好吧,我知道我刚刚问了一个类似的问题,但是我试着简化它,所以我用了一个看起来很糟糕的例子,一个我没有想到的问题,从而得到了没有解决我问题的答案。
我有这样的设置:
我在美国东部时间有个方法。它在一堆JTextAreas中循环,并删除空的。
那有什么可抓的?
每次删除JTextArea时,都会触发一个侦听器,然后在视觉上更新GUI (将所有可视对象拉到JTextArea下面)。
那会发生什么?在执行循环时,JTextAreas不是视觉上被删除的,而是添加到EDT (我猜是这样),然后在循环完成后立即全部删除。然后,所有的侦听器都会同时触发并破坏整个GUI。
由于所有内容都是在EDT上运行的,所以我希望代码能够这样运行:
我怎么能强迫我的程序这样做呢?
我是否应该创建一个搜索空白JTextAreas的新线程,并在invokeLater(new ())中执行删除操作?进行搜索的实际代码实际上不是CPU全神贯注的,它只运行于arrayList of JTextAreas并检查为getText().equals(""),所以我并不认为这是必要的.
发布于 2013-03-01 02:51:51
删除单个文本区域。确定是否有更多要删除的内容,如果需要删除,则使用SwingUtilities.invokeLater()将任务排队,该任务将返回到当前代码中。重复,直到所有文本区域被移除。
https://stackoverflow.com/questions/15149531
复制相似问题