我不知道为什么,但是当我添加内容窗格时,它会创建一个新的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();
}
}
答案 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中实现了此解决方案。