festlegen Größe der Komponente in container mit BoxLayout

Konfrontiert mit dem problem der Verwendung von BoxLayout

In meinem Beispiel, ich versuche, verringern Sie die Höhe des Textfeld, und ändern Sie die Breite der buttons (siehe grüne Markierung im Bild). Ich weiß über die Techniken setPrefferedSize () und setMaximumSize (), aber es hat nicht funktioniert, wie es sollte. Die Zeile add(Box.createHorizontalGlue ()) auch nicht helfen.

Vielen Dank für jede Idee

public class Testy extends JPanel {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                constructGUI();
            }
        });
    }

    private static void constructGUI() {
        JFrame frame = new JFrame("Testy");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        JPanel centerPanel = new JPanel();
        centerPanel.setBackground(Color.DARK_GRAY);
        centerPanel.setPreferredSize(new Dimension(100, 400));
        frame.add(centerPanel, BorderLayout.CENTER);

        Testy eastPanel = new Testy();
        frame.add(eastPanel, BorderLayout.EAST);

        frame.pack();
        frame.setVisible(true);
    }

    public Testy() {
        setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

        JButton button = new JButton("Button ...... 1");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button 2");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        button = new JButton("Button ........... 3");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        JLabel label = new JLabel("Label");
        //label.setPreferredSize(...);
        //label.setMaximumSize(...);
        add(label);

        JTextField textField = new JTextField();
        //textField.setPreferredSize(...);
        //textField.setMaximumSize(...);
        add(textField);

        button = new JButton("Button 4");
        //button.setPreferredSize(...);
        //button.setMaximumSize(...);
        add(button);

        //add(Box.createHorizontalGlue());
    }
}

festlegen Größe der Komponente in container mit BoxLayout

  • Als schnelle Abhilfe können Sie mit geschachtelten layouts, in dem Sinne, dass auf der rechten Seite, erstellen Sie eine JPanel mit BorderLayout, setzen Sie einen JPanel(say centerPanel) am CENTER und ein JPanel(say buttonPanel) bei PAGE_END Lage. Verwenden jetzt eine neue JPanel(say compPanel) mit GridLayout und legen Sie alle Komponenten auf Sie, und legen Sie diese compPanel innen centerPanel. Ort JButton(button4) innen buttonPanel wie Sie ist. Ich denke, das wird funktionieren 🙂
  • Für bessere Hilfe früher, nach einem SSCCE. Ein SSCCE sollte umfassen Importe, eine Klasse definition & ein main Methode.
InformationsquelleAutor Dumas45 | 2013-08-23
Schreibe einen Kommentar