2010-04-26 55 views

回答

1

只需将组件添加到中心和重新验证(。

+0

完美地工作。谢谢! – derekerdmann 2010-04-26 12:47:53

+1

顺便说一下,container.revalidate()实际上应该是container.validate()。 – derekerdmann 2010-04-26 12:55:12

+0

-1,此解决方案不起作用。它似乎可行,但尝试调整框架的大小,现在将在新面板上绘制前一个面板。这是因为“Z-Ordering”在Swing中的作用。根据您的确切要求,正确的解决方案是其他两种建议之一。 – camickr 2010-04-26 16:04:21

1

你尝试上线的东西:)父容器

container.add(BorderLayout.CENTER, newPanel); 
container.revalidate(); 
+1

您还需要在此建议中添加revalidate()或validate()。 – camickr 2010-04-26 16:05:53

0

使用管理这个对你Card Layout

void swapCenterPanel(JFrame frame, JPanel oldPanel, JPanel newPanel) { 
    frame.getContentPane().remove(oldPanel); 
    frame.getContentPane().add(newPanel, BorderLayout.CENTER); 
} 
0

我得到了这个工作,没有z索引问题通过试错。

让呼叫X它具有的BorderLayout
让我们称之为Y,它是目前占用BorderLayout.Center
Component让呼叫z中的JPanel中的中心位置,以取代JPanel

​​

我发现如果我试图通过LayoutManager本身删除现有的JPanel,它不起作用。相反,如果您使用JPanel的remove方法,那么java文档会说它会通知布局removeLayoutComponent方法,并且似乎可以做到这一点。