好的,目前我正在尝试制作一个多窗口程序。
通过查看其他论坛,您似乎要在Java JFrame中执行此操作,您必须通过添加new JComponent(new window/layout/idk)
来更新其内容窗格,将当前窗口可见性设置为false,将新的可见性设置为true,验证& /重新绘制内容窗格:
contentPane.add(newWindowPanel);
currentWindowPanel.setVisible(false);
newWindowPanel.setVisible(true);
contentPane.validate();
contentPane.repaint();
现在,我正在尝试做的部分工作是创建了一个扩展JPanel
的类,并且这个类将成为我要创建的许多其他JPanel类的层次结构的顶层。
在那个班级里我有这个方法:
public void updateContentPane(Container contentPane, JPanel currentPanel, JPanel nextPanel){
contentPane.add(nextPanel);
currentPanel.setVisible(false);
nextPanel.setVisible(true);
contentPane.validate();
contentPane.repaint();
}
当我在其中一个子类中调用此方法时,它不起作用。
updateContentPane(WindowMain.contentPane, this, mainMenuClass);
每个子类都继承了JPanel特性。
" WindowMain"是一个扩展JFrame的类," contentPane"是一个静态容器变量,用于保存框架contentPane。
"这"代表当前的类(继承JPane),但是"这个"实际上没有工作new Object()
。
" mainMenuClass"也继承了JPanel,并且已经在这个类中实例化了。
我的目标是通过调用该方法简单地从一个场景跳转到另一个场景。但它通过代码(调试)但没有任何反应。但是,如果我将方法中的代码放在一个按钮监听器中,它就能正常工作。
(对不起,所有这些写作,可能会引起一些混乱,但我需要弄明白这一点,并且我将为contentPane已经包含一个类时设置条件,所以不需要提及它)< / p>
答案 0 :(得分:0)
您可以通过执行
更新整个框架frame.revalidate();
frame.repaint();