Fügen Sie mithilfe des Flusslayouts Steuerelemente vertikal statt horizontal hinzu

Lesezeit: 3 Minuten

Benutzer-Avatar
adesch

Ich füge Kontrollkästchen hinzu JPanel in FlowLayout Die Kontrollkästchen werden horizontal hinzugefügt.

Ich möchte Kontrollkästchen vertikal auf dem Panel hinzufügen. Was ist die mögliche Lösung?

  • FlowLayout tut, was es vorschlägt, Komponenten von links nach rechts fließen lassen, bis kein Platz mehr vorhanden ist, und dann in die nächste Zeile gehen, mit verschiedenen Layouts können Sie tun, was Sie brauchen.

    – Abstraktes Chaos

    22. November 2012 um 10:30 Uhr


  • welches Layout soll ich dafür verwenden

    – adesch

    22. November 2012 um 10:32 Uhr

  • Ich würde vorschlagen, a BoxLayout

    – Abstraktes Chaos

    22. November 2012 um 10:33 Uhr


  • @ user714965 So sehr Google bei der Arbeit mit der Benutzeroberfläche hilft, ist es dennoch wichtig zu verstehen, wie es funktioniert

    – Abstraktes Chaos

    22. November 2012 um 10:36 Uhr

Benutzer-Avatar
Sunil luitel

8opHY

Ich hoffe, was Sie erreichen wollen, ist so. Verwenden Sie dazu bitte das Box-Layout.

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 JPanel jContentPane = null;

    public Testing() {
        super();
        initialize();
    }

    private void initialize() {
        this.setSize(300, 200);
        this.setContentPane(getJContentPane());
        this.setTitle("JFrame");
    }

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

  • … und der grundlegende Ansatz (BoxLayout verwenden) unterscheidet sich von der früheren Antwort von @AbstractChaos darin, dass …? Außer schlimmer: Null-Layout im Inhaltsbereich? manuelle Größenanpassung/Positionierung des Panels? nein, nein, nicht. Und was soll die updateComponentTreeUI hier leisten?

    – Kleopatra

    22. November 2012 um 11:37 Uhr


  • Diese Antwort ist richtig, aber zu komplex und liegt außerhalb des Fokus des Problems

    – Domenico Monaco

    18. Juli 2014 um 9:45 Uhr

  • Wie kann ich ein einzelnes Element rechts ausrichten und alle anderen zentriert haben?

    – Markus Mönius

    6. März 2018 um 10:44 Uhr

Benutzer-Avatar
Nakul Sudhakar

Ich habe eine BoxLayout und setze seinen zweiten Parameter als BoxLayout.Y_AXIS und es hat bei mir funktioniert:

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

  • Wie kann ich ein einzelnes Element rechts ausrichten und alle anderen zentriert haben?

    – Markus Mönius

    6. März 2018 um 10:43 Uhr

Wie ich im Kommentar erwähnt habe, würde ich dafür ein Box-Layout verwenden.

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

  • dieser kompiliert nicht

    – Stepan Jakowenko

    6. November 2017 um 5:20 Uhr

Benutzer-Avatar
Declan Cahill

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

1043260cookie-checkFügen Sie mithilfe des Flusslayouts Steuerelemente vertikal statt horizontal hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy