Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame在调用getContentPane()后冻结。removeAll()_Java_Swing_Jframe_Minesweeper - Fatal编程技术网

Java JFrame在调用getContentPane()后冻结。removeAll()

Java JFrame在调用getContentPane()后冻结。removeAll(),java,swing,jframe,minesweeper,Java,Swing,Jframe,Minesweeper,这个问题的标题不言自明。我使用JFrame制作了一个扫雷舰的克隆,刚刚完成了玩家选择游戏大小的开始屏幕。当点击一个按钮时,框架应该为游戏屏幕清除就绪。当我点击一个按钮时,按钮保持在“按下”状态,JFrame冻结,我必须关闭它。我做错了什么 代码: 它不会冻结,调用框架的repaint()方法,所有组件都将被清除 只需在actionPerformed()中添加下一行即可: 它不会冻结,调用框架的repaint()方法,所有组件都将被清除 只需在actionPerformed()中添加下一行即可:

这个问题的标题不言自明。我使用JFrame制作了一个扫雷舰的克隆,刚刚完成了玩家选择游戏大小的开始屏幕。当点击一个按钮时,框架应该为游戏屏幕清除就绪。当我点击一个按钮时,按钮保持在“按下”状态,JFrame冻结,我必须关闭它。我做错了什么

代码:


它不会冻结,调用框架的
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();
          }