Layout-Manager-Java preferredSize

Ich bin immer noch versuchen zu lernen, wie layout-Manager arbeiten. Ich machte ein Bild mit zwei JPanels.
Die erste enthält eine textArea mit einem boxLayout.
Die zweite enthält ein flow-layout mit einer Taste.

Ich die preferredSize des jedes panel entsprechend, verpackt Sie, bekam aber unerwartete Ergebnisse.

import java.awt.*;
import javax.swing.*;

public class LayoutMgrTest
{
    public static void main(String[] args)
    {
        TableBasic frame = new TableBasic();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
        frame.setVisible(true);


        frame.getContentPane().setLayout(new GridLayout(2,1));

        JPanel controlPane = new JPanel();
        JPanel buttonPane = new JPanel();

        controlPane.setLayout(new BoxLayout(controlPane, BoxLayout.PAGE_AXIS));
        controlPane.setPreferredSize(new Dimension(200, 200));
        controlPane.add(new JScrollPane(new JTextArea()));

        buttonPane.setLayout(new FlowLayout(FlowLayout.LEFT));
        buttonPane.setPreferredSize(new Dimension(100,20));
        buttonPane.add(new JButton("Button1"));
        buttonPane.add(new JButton("Button2"));

        frame.getContentPane().add(controlPane, BorderLayout.NORTH);
        frame.getContentPane().add(buttonPane, BorderLayout.SOUTH);
        frame.setSize(new Dimension(500,500));
        frame.pack();
    }
}

Was ich Tue, wenn ich ein grid-Layout, es scheint immer reservieren Sie die Hälfte der zur Verfügung stehenden Flächen für jedes Steuerelement. Mir wurde gesagt, dass:

Die Höhe der einzelnen Zeilen ist abhängig von der Höhe der einzelnen Komponenten
Hinzugefügt in jeder Zeile.

Den buttonpane Höhe ist 20. Es ist die Zuweisung viel mehr als das:

Layout-Manager-Java preferredSize

Was ist falsch an diesem code?
Ich möchte zu verlassen, die zwei JPanels intakt bitte. Es ist einfach, fügen Sie einfach die textbox und die buttons direkt auf den Rahmen, aber ich muss es tun mit JPanels (weil ich werden das hinzufügen von Grenzen und andere Dinge).

InformationsquelleAutor David | 2011-08-13

Schreibe einen Kommentar