如何用borderlayout的South区像图中一样塞进两个组件,并且为何我添加到Nouth区的组件刚运行不会显示,要拉伸一下边框才会显示
使用borderlayout布局时添加组件的代码示例如下:
import java.awt.BorderLayout;
import javax.swing.*;
public class Demo extends JFrame {
public Demo() {
setTitle("测试BorderLayout布局");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
JLabel label = new JLabel("第一个组件");
JButton button = new JButton("第二个组件");
// 将两个组件放在南部区域
panel.add(label, BorderLayout.SOUTH);
panel.add(button, BorderLayout.SOUTH);
// 添加一个监听器显示组件
panel.addComponentListener(new ComponentAdapter() {
public void componentShown(ComponentEvent e) {
System.out.println("组件显示了");
}
});
getContentPane().add(panel);
setSize(500, 500);
setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}
在添加组件到北部区域时,可以尝试设置组件的最小大小,以保证组件在初始时能够显示出来。代码示例如下:
import java.awt.BorderLayout;
import javax.swing.*;
public class Demo extends JFrame {
public Demo() {
setTitle("测试BorderLayout布局");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
JLabel label = new JLabel("第一个组件");
JButton button = new JButton("第二个组件");
// 将两个组件放在北部区域
label.setMinimumSize(label.getPreferredSize());
panel.add(label, BorderLayout.NORTH);
button.setMinimumSize(button.getPreferredSize());
panel.add(button, BorderLayout.NORTH);
getContentPane().add(panel);
setSize(500, 500);
setVisible(true);
}
public static void main(String[] args) {
new Demo();
}
}