2

好的,目前我正在尝试制作一个多窗口程序。

从其他论坛来看,您似乎在 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 的静态容器变量。

“this”表示当前类(继承 JPane),但“this”实际上不起作用new Object()

“mainMenuClass”也继承了JPanel,并且已经在这个类中实例化了。

我的目标是通过调用该方法简单地从一个场景跳转到另一个场景。但它通过代码(调试)但没有任何反应。但是,如果我在方法中获取代码并将其放在按钮侦听器中,它就可以正常工作。

(很抱歉写了这么多,可能会带来一些混乱,但我仍然需要弄清楚这一点,并且我会设置 contentPane 何时已经包含一个类的条件,因此无需提及)

4

1 回答 1

1

你可以通过这样做来更新整个框架

frame.revalidate();
frame.repaint();
于 2016-07-20T09:39:38.657 回答