【发布时间】:2011-02-12 06:10:38
【问题描述】:
我有一个 JPanel 位于 JFrame 的 BorderLayout 的中心位置。如何将当前的 JPanel 换成新的?
【问题讨论】:
标签: java user-interface swing jframe jpanel
我有一个 JPanel 位于 JFrame 的 BorderLayout 的中心位置。如何将当前的 JPanel 换成新的?
【问题讨论】:
标签: java user-interface swing jframe jpanel
你有没有尝试过:
void swapCenterPanel(JFrame frame, JPanel oldPanel, JPanel newPanel) {
frame.getContentPane().remove(oldPanel);
frame.getContentPane().add(newPanel, BorderLayout.CENTER);
}
【讨论】:
使用Card Layout 为您管理。
【讨论】:
只需将组件添加到中心并 revalidate() 父容器
container.add(BorderLayout.CENTER, newPanel);
container.revalidate();
【讨论】:
通过反复试验,我得到了这个没有 z 索引问题的工作。
让 x 调用具有 BorderLayout
的 JPanel
让我们称你为当前占用BorderLayout.Center的Component
让我们调用 z JPanel 来替换中心位置。
x.remove(y);
x.add(z);
x.repaint();
x.revalidate();
我发现如果我尝试通过 LayoutManager 本身删除现有的 JPanel,它不起作用。相反,如果您使用 JPanel 的 remove 方法,java 文档会说它会通知布局 removeLayoutComponent 方法并且似乎可以解决问题。
【讨论】: