我有一个JFrame
和两个JPanels
。当我的程序启动时,它会将第一个JPanel
添加到JFrame
。 JFrame
组件(x,最小化,KeyListener
等)都可以正常工作。但是当我删除第一个JPanel
并添加第二个JPanel
时,JFrame
的'x'按钮将无效,也不会KeyListener
或MouseListener
。如何让JFrame
正常运行?
答案 0 :(得分:0)
如果在对组件进行更改后基本的GUI操作停止运行,则很可能会违反Swing线程模型。 Swing是单线程的,您需要遵循一个简单的规则,确保影响GUI绘制的操作在Event Dispatch Thread中完成,否则您将面临死锁或其他不需要的行为的风险。
你有几个选择。您可以使用SwingWorker
,也可以实例化Runnable
并将其放入SwingUtilities.invokeLater
或SwingUtilities.invokeAndWait
。请查看this link有关Swing中线程的概念。