JFrame 布局添加


private void initGui() {
    JFrame frame = new JFrame();
    JPanel panel=new JPanel();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(displaySystem);
    frame.add(panel,BorderLayout.SOUTH);
    JButton button = new JButton("Press me ");
    JSlider slider = new JSlider(JSlider.HORIZONTAL,0, 100, 10);
    frame.add(button,BorderLayout.SOUTH);
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
    synchronized(cells){
            reset();
    }
        }            
    });
    frame.pack();
    frame.setVisible(true);
}

这是我目前拥有的代码,我想在按钮下方添加 3 个滑块,但我似乎无法使用 BorderLayout 做到这一点。如果我在frame.add(button,BorderLayout.SOUTH)后立即frame.add(slider,BorderLayout.SOUTH),它会导致按钮被遮盖。有没有一种方法可以让我连续地在南部区域放置,并且所有按钮/滑块的宽度都与框架相同?

使用 Swing BoxLayout。请参阅以下代码:

private void initGui() {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(createRootPanel());
    frame.pack();
    frame.setVisible(true);
}
private JPanel createRootPanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    JButton button = new JButton("Press me ");
    JSlider slider1 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10);
    JSlider slider2 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10);
    JSlider slider3 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10);
    panel.add(button);
    panel.add(Box.createRigidArea(new Dimension(0,5)));
    panel.add(slider1);
    panel.add(Box.createRigidArea(new Dimension(0,5)));
    panel.add(slider2);
    panel.add(Box.createRigidArea(new Dimension(0,5)));
    panel.add(slider3);
    return panel;
}

最新更新