Java JFrame在调用getContentPane()后冻结。removeAll()
这个问题的标题不言自明。我使用JFrame制作了一个扫雷舰的克隆,刚刚完成了玩家选择游戏大小的开始屏幕。当点击一个按钮时,框架应该为游戏屏幕清除就绪。当我点击一个按钮时,按钮保持在“按下”状态,JFrame冻结,我必须关闭它。我做错了什么 代码:Java JFrame在调用getContentPane()后冻结。removeAll(),java,swing,jframe,minesweeper,Java,Swing,Jframe,Minesweeper,这个问题的标题不言自明。我使用JFrame制作了一个扫雷舰的克隆,刚刚完成了玩家选择游戏大小的开始屏幕。当点击一个按钮时,框架应该为游戏屏幕清除就绪。当我点击一个按钮时,按钮保持在“按下”状态,JFrame冻结,我必须关闭它。我做错了什么 代码: 它不会冻结,调用框架的repaint()方法,所有组件都将被清除 只需在actionPerformed()中添加下一行即可: 它不会冻结,调用框架的repaint()方法,所有组件都将被清除 只需在actionPerformed()中添加下一行即可:
它不会冻结,调用框架的
repaint()
方法,所有组件都将被清除
只需在actionPerformed()中添加下一行即可:
它不会冻结,调用框架的repaint()
方法,所有组件都将被清除
只需在actionPerformed()中添加下一行即可:
就这样
public void gameScreen()
{
frame.getContentPane().removeAll();
frame.repaint();
}
就这样
public void gameScreen()
{
frame.getContentPane().removeAll();
frame.repaint();
}
JFrame
的默认LayoutManager
是Borderlayout
- 对已经可见的Swing GUI的所有更改(添加、删除、调整大小、修改)必须正确地通知已使用的
LayoutManager
JFrame
的标准通知程序是frame.(重新*)验证和frame.repaint()**
- *-在Java7和更新版本中
- **-并非在所有情况下都需要(对于
JTextComponents
,JFrame.pack()
,例如),默认情况下最好也使用此代码行
JFrame
的默认LayoutManager
是Borderlayout
- 对已经可见的Swing GUI的所有更改(添加、删除、调整大小、修改)必须正确地通知已使用的
LayoutManager
JFrame
的标准通知程序是frame.(重新*)验证和frame.repaint()**
- *-在Java7和更新版本中
- **-并非在所有情况下都需要(对于
JTextComponents
,JFrame.pack()
,例如),默认情况下最好也使用此代码行
糟糕的设计。检查这个糟糕的设计。检查这个
public void gameScreen()
{
frame.getContentPane().removeAll();
frame.repaint();
}