Размещение объектов в flowlayout с новой строки

Как я могу расположить последний елемент в JPanel с новой строки, если все предыдущие елементы размещены в flowlayout?

введите сюда описание изображения

Мне нужно, чтобы JSlider был в новой строке.

Важно, чтобы три этих кнопки так и оставались по центру!

Вот мой код:

public class ControlPanel extends JPanel {
private JButton startButton;
private JButton pauseButton;
private JButton stopButton;
private JSlider slider;

public ControlPanel() {
    setLayout(new FlowLayout(FlowLayout.CENTER));
    
    this.startButton = new JButton();
    startButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-start.png"));
    startButton.setPreferredSize(new Dimension(25, 25));
    
    this.pauseButton = new JButton();
    pauseButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-pause.png"));
    pauseButton.setPreferredSize(new Dimension(25, 25));

    this.stopButton = new JButton();
    stopButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-stop.png"));
    stopButton.setPreferredSize(new Dimension(25, 25));

    add(startButton);
    add(pauseButton);
    add(stopButton);

    this.slider = new JSlider();
    slider.setMinimum(0);
    slider.setMaximum(1000);
    slider.setOrientation(SwingConstants.HORIZONTAL);
    add(slider);

    slider.setMajorTickSpacing(100);
    slider.setMinorTickSpacing(50);
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);

    slider.setPreferredSize(new Dimension(400,50));

    setVisible(true);
}

}

Ответы (1 шт):

Автор решения: Bogdan Voinov

Нужно просто поменять Layout на GridBagLayout

    public class ControlPanel extends JPanel {
    private JButton startButton;
    private JButton pauseButton;
    private JButton stopButton;
    private JSlider slider;

    public ControlPanel() {
    setLayout(new GridBagLayout());
    this.startButton = new JButton();
    startButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-start.png"));
    startButton.setPreferredSize(new Dimension(25, 25));

    this.pauseButton = new JButton();
    pauseButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-pause.png"));
    pauseButton.setPreferredSize(new Dimension(25, 25));

    this.stopButton = new JButton();
    stopButton.setIcon(new ImageIcon("src\\resources\\gui\\icons\\control-stop.png"));
    stopButton.setPreferredSize(new Dimension(25, 25));
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;

    add(startButton,c);
    c.gridx = 1;
    add(pauseButton,c);
    c.gridx = 2;
    add(stopButton,c);

    this.slider = new JSlider();
    slider.setMinimum(0);
    slider.setMaximum(1000);
    slider.setOrientation(SwingConstants.HORIZONTAL);
    c.gridy = 1;
    c.gridx = 0;
    c.gridwidth = 4;
    c.gridheight = 1;
    add(slider,c);

    slider.setMajorTickSpacing(100);
    slider.setMinorTickSpacing(50);
    slider.setPaintTicks(true);
    slider.setPaintLabels(true);

    slider.setPreferredSize(new Dimension(400,50));
    setVisible(true);
}
}
→ Ссылка