2010-11-05 43 views
0

我有一个JFrame和两个JPanels。当我的程序启动时,它将第一个JPanel添加到JFrameJFrame组件(x,最小化,KeyListener等)都有效。但是当我删除第一个JPanel并添加第二个JPanelJFrame的'x'按钮不会工作,也不会有任何KeyListenerMouseListener。我怎样才能让JFrame正常工作?为什么JFrame不会回应?

+1

你能告诉我们你的代码吗? (一个尽可能短的可运行程序,并证明这个问题是理想的) – Ash 2010-11-06 00:35:45

+0

其实我继续探讨这个问题,只要我添加(组件)任何按钮,第一个面板的jframe就吓倒了。此外,我尝试绕过第一个面板到第二个和Jframe不会工作。 – 2010-11-06 00:49:14

+1

@Ash AKA an SSCCE(http://pscode.org/sscce.html)。 – 2010-11-06 01:58:09

回答

0

如果在对组件进行更改后,基本的GUI操作停止运行,那么您很可能会碰到Swing线程模型。 Swing是单线程的,你需要遵循一个简单的规则,确保在事件调度线程中完成影响GUI绘制的操作,否则你将面临死锁或其他不良行为的风险。

你有几个选项。您可以使用SwingWorker,或者您可以将Runnable实例化并将其放入SwingUtilities.invokeLaterSwingUtilities.invokeAndWait。有关Swing中的线程概念,请参阅this link

相关问题