java - 在 Java 中动态更改 BorderLayout

标签 java user-interface border-layout

我有一个带有 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 网站上阅读更多内容:)

Using Top-Level Containers

关于java - 在 Java 中动态更改 BorderLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185037/

相关文章:

Java - 在不使用外部类或方法的情况下计算数组中的重复项?

java - 从 JAR/Lib 启动 Activity

java - (java.lang.String) 不能应用于 (java.lang.Object)

ios - 如何在任何 UICollectionViewCell 下方插入随机 View

java - repaint() 方法不重新绘制 JPanel

java - 如何删除java borderlayout中南北面板之间的间隙

java - 保持用户登录 - 使用网络驱动程序保存 cookie

java - 在安卓 : How can i send the result of from OnPostExecute() to other activity?

java - 如何在同一个 JPanel 中实现南北部分

java - 如何将 JLabel 和 JTextField 添加到 BorderLayout 中心的底部?