搭建界面borderlayout怎么用

如何用borderlayout的South区像图中一样塞进两个组件,并且为何我添加到Nouth区的组件刚运行不会显示,要拉伸一下边框才会显示

img

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    使用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();
        }
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^