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;
}