添加内容窗格时正在创建新的JFrame

时间:2018-08-23 16:11:24

标签: java jframe

我不知道为什么,但是当我添加内容窗格时,它会创建一个新的JFrame窗口,而不是替换同一窗口上的旧内容窗格。谢谢,我的代码如下:我有一个public void(容器窗格)。这就是我要添加到JFrame中的内容。

public  void Start1(){       

    if (number==0){

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Set up the content pane.
    add(getContentPane());

    //Display the window.
    pack();
    setVisible(true); 
    setExtendedState(JFrame.MAXIMIZED_BOTH); 

    setVisible(true);
}
    else {
      add(getContentPane());

    //Display the window.
        pack();  
    }
}

1 个答案:

答案 0 :(得分:0)

正如评论中所讨论的那样,仅通过简单的javac -version然后ContentPane更新removeAll();的内容所面临的问题就足够了。内容窗格始终是使用JFrame创建的,如果您有其他选择,则不应将其删除。对于您的情况,您应该只更新内容窗格的组件。这是我遇到类似问题时提出的解决方案:

我在内容窗格中创建了一个JPanel:

repaint();

然后,每当我想要更新该屏幕时,便将以下代码添加到方法/事件中:

JPanel viewport = new JPanel();
viewport.setBackground(Color.WHITE);
viewport.setBounds(0, 302, 414, 420);
contentPane.add(viewport);
viewport.setLayout(null);

这将删除您拥有的每个组件并将其重新绘制到您的JPanel。因此,如果您更新信息(或要更新的信息),然后运行这两个简单方法,则可以正确更新组件。

如果您还有其他疑问,请查看the class,我在GitHub中实现了此解决方案。