Подтвердить что ты не робот

Добавлять элементы управления вертикально, а не горизонтально, используя раскладку

Я добавляю флажки в JPanel в FlowLayout, флажки добавляются горизонтально.

Я хочу добавить флажки по вертикали на панели. Какое возможное решение?

4b9b3361

Ответ 1

Надеюсь, что вы пытаетесь достичь именно так. Для этого используйте раскладку Box.

package com.kcing.kailas.sample.client;

import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;

public class Testing extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;

/**
 * This is the default constructor
 */
public Testing() {
    super();
    initialize();
}

/**
 * This method initializes this
 * 
 * @return void
 */
private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
}

/**
 * This method initializes jContentPane
 * 
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(null);

        JPanel panel = new JPanel();

        panel.setBounds(61, 11, 81, 140);
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        jContentPane.add(panel);

        JCheckBox c1 = new JCheckBox("Check1");
        panel.add(c1);
        c1 = new JCheckBox("Check2");
        panel.add(c1);
        c1 = new JCheckBox("Check3");
        panel.add(c1);
        c1 = new JCheckBox("Check4");
        panel.add(c1);


    }
    return jContentPane;
}
public static void main(String[] args) throws Exception {
    Testing frame = new Testing();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}

Ответ 2

Я использовал BoxLayout и установил его второй параметр как BoxLayout.Y_AXIS, и он работал у меня:

panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

Ответ 3

Как я уже сказал в комментарии, я бы использовал для этого макет окна.

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout());

JButton button = new JButton("Button1");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);

button = new JButton("Button2");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);

button = new JButton("Button3");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);

add(panel);

Ответ 4

JPanel testPanel = new JPanel();
testPanel.setLayout(new BoxLayout(testPanel, BoxLayout.Y_AXIS));
/*add variables here and add them to testPanel
        e,g`enter code here`
        testPanel.add(nameLabel);
        testPanel.add(textName);
*/
testPanel.setVisible(true);