java - 为什么添加新组件时 BorderLayout 会覆盖组件?

标签 java awt

BorderLayout 做了一些奇怪的事情。如果我将两个面板添加到具有相同约束的 Container 中(例如 BorderLayout.CENTER),那么第一个面板就会消失,即使第二个面板被删除或创建看不见的

似乎将每个元素“堆叠”在前面的元素之上是有意义的。

这是正确的并且是有意设计的吗?如果是这样,有相关文档吗?

还有其他人为此感到沮丧吗?您有解决方案吗,例如自定义 LayoutManager

示例代码:

JFrame frame = new JFrame();
frame.setSize(500, 500);

JPanel panel1 = new JPanel();
panel1.setBackground(Color.blue);
frame.getContentPane().add(panel1);

JPanel panel2 = new JPanel();
panel2.setBackground(Color.red);
frame.getContentPane().add(panel2);

panel2.setVisible(false); // Seems like it should allow us to see panel1.

frame.setVisible(true);

这将创建并显示一个 500x500 的空白框。

最佳答案

BorderLayout 根本就不是为了执行您想要的操作而设计的。责任分离。如果您想要这种行为,您应该编写:将 BorderLayoutCardLayout 组合起来。但对于实际的堆栈行为,您必须自己编写一些代码(或者找到已经编写过代码的人)。

关于java - 为什么添加新组件时 BorderLayout 会覆盖组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3946799/

相关文章:

java - Jtable cellEditor 集不适用于我的表模型定义

java - 类加载隔离在 jboss 5.1.x 中工作吗

java - mouseEntered 不会执行

java - 你如何在 Java 中制作如此复杂的 GUI? Gwt有可能吗?还是需要用别的东西?

java - 在 JButton 的右上角画一些东西

java - 用于 Selenium 测试的 Spring Security @WithMockUser

java - 无法从 POST 请求检索数据

java - 打印彩色页眉和页脚?

Java 图像跟随我的光标

java - Glassfish 2.1.1 - session Bean 重复调用 init() 和 destroy()