我有一个带有 BorderLayout 的窗口,带有一个包含放在中心的内容的 JPanel,大小为 800*250。我希望单击按钮后,JPanel 会移至北方,而另一个 JPanel 会移至中心。我尝试了这个,但它只调整了我的窗口大小,没有执行任何其他操作。
我尝试了这个,但似乎不起作用。
public void actionPerformed(ActionEvent e) {
frame.setPreferredSize(new Dimension(800,550));
frame.removeAll();
frame.add(northpanel, BorderLayout.NORTH);
frame.add(southpanel, BorderLayout.CENTER);
frame.getContentPane().repaint();
frame.getContentPane().revalidate();
frame.pack();
}
northpanel 之前已在 CENTER 上设置。
谢谢。 :)
最佳答案
add() 和remove() 方法被重写,因此它们会自动在内容 Pane 上执行所有操作。请记住,JFrame 只是一个容器,重要的是您的内容 Pane 。 removeAll() 方法不会像这样被重写。你应该做的是:
frame.getContentPane().removeAll();
您可以在 Oracle 网站上阅读更多内容:)
关于java - 在 Java 中动态更改 BorderLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185037/