gpt4 book ai didi

java - 如何通过调用方法更新 JFrame 内容 Pane ?

转载 作者:行者123 更新时间:2023-12-05 05:23:15 25 4
gpt4 key购买 nike

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

从其他论坛上看,您似乎要在 Java JFrame 中执行此操作,您必须通过添加 new JComponent(new window/layout/idk) 来更新其内容 Pane ,设置当前窗口visibility 为 false,将新的 visibility 设置为 true 并验证和/重绘内容 Pane :

    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 已经包含一个类时设置条件,因此无需提及)

最佳答案

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

frame.revalidate();
frame.repaint();

关于java - 如何通过调用方法更新 JFrame 内容 Pane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38477412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com