如何在JFrame中动态更改JPanel?

2022-08-31 23:49:34

简单来说,有一个简单的java swing应用程序,它由JFrame和一些组件组成。其中一个组件是JPanel,它意味着在用户操作上被另一个JPanel替换。

那么,做这样的事情的正确方法是什么呢?我试过了

panel = new CustomJPanelWithComponentsOnIt();
parentFrameJPanelBelongsTo.pack();

但这行不通。你有什么建议?


答案 1

您的用例似乎非常适合CardLayout

在卡片布局中,您可以在同一位置添加多个面板,但随后一次显示或隐藏一个面板。


答案 2

1) 设置第一个面板:

JFrame frame=new JFrame();
frame.getContentPane().add(new JPanel());

2)更换面板:

frame.getContentPane().removeAll();
frame.getContentPane().add(new JPanel());

另请注意,您必须在事件的线程中执行此操作,以确保使用 SwingUtilities.invokeLaterSwingWorker


推荐