下面是将两个面板添加到框架的示例。只出现一个面板(第二个,红色面板)。
为什么第一个面板消失了?
import java.awt.Color;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class DisappearingPanelInFrame {
DisappearingPanelInFrame() {
JFrame f = new JFrame(this.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.add(getColoredPanel(Color.GREEN));
f.add(getColoredPanel(Color.RED));
f.pack();
f.setVisible(true);
}
private JPanel getColoredPanel(Color color) {
JPanel p = new JPanel();
p.setBackground(color);
p.setBorder(new EmptyBorder(20, 150, 20, 150));
return p;
}
public static void main(String[] args) {
Runnable r = DisappearingPanelInFrame::new;
SwingUtilities.invokeLater(r);
}
}
最佳答案
JFrame
(或者更具体地说,在本例中是框架的内容 Pane )的默认布局是BorderLayout
。- 在没有约束的情况下向
BordeLayout
添加组件时,Swing API 会将组件放在CENTER
中。 BorderLayout
可以在 5 个布局约束中的每一个中包含恰好一个 组件。- 当第二个组件添加到
BorderLayout
的相同约束(在本例中为CENTER
)时,此 Java 实现将显示添加的最后一个组件.
至于什么是更好的方法取决于用户界面的具体需求。
关于java - 为什么添加到框架中的第一个面板会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30361149/