我在网上看到了这个:
setVisible(true)
副作用:即使您没有在EDT上初始化GUI,调用setVisible(true)
的副作用是启动EDT线程,该线程继续运行并监视GUI。
如果是这样,setVisible(false)
对EDT的影响是什么?
theButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("Test 1");
System.out.println("Still Testing");
panel.remove(theButton);
panel.revalidate();
panel.repaint();
myFrame.dispose();
dothis();
myFrame.setVisible(true);
}});
功能dothis()
:
public void dothis()
{
for (int i=0;i<9999999999;i++)
{
System.out.println("Test 1"+i);
}
}
我知道actionPerformed()
在Event Dispatch线程中运行。但是在上面的程序中,JFrame在actionPerformed()
完全执行之前重新出现(因为dothis()
仍在打印),为什么这发生了吗?
myFrame.setVisible()
是否在另一个线程中运行?
- 在这种情况下为什么不跟踪事件队列?
- 如果myFrame.setVisible
启动了EDT,我在上面的陈述中已经添加了myFrame.dispose()
做了什么?
我之前发过类似的问题,但是当我练习时我遇到了更多的问题,我无法找到其中许多问题的在线解决方案。
myFrame.setVisible()
运行在与EDT不同的主题中的另一个问题是the frame reappears but the button is not removed yet
。它再次出现在其中的按钮中,并在actionPerformed()
完全执行之前重新出现。< / LI>
dothis()
正在控制台上显示内容,所以我认为dothis()
必须在与EDT不同的线程上运行。这是对的吗?有人可以给我一个详细的解释。长的答案也很受欢迎。我在网上找不到与我的问题有关的任何具体问题。请帮助我。