6

JFrameに3つのJPanelをペイントしています。これらは現在、デフォルトのFlowLayoutを使用するようにすべて設定されています。これらを1つの列で上下に並べたいと思います。

しかし、それらの中にあるコンポーネントである限り、これらは同じ線上で隣り合って浮かんでいることがわかりました。

FlowLayout JPanelの自然な幅は、その内容の合計ですか?もしそうなら、領域の幅をJFrameの幅に強制する方法はありますか?

興味深いことに、「上」と「下」のパネルにJFrameの幅全体にまたがるコンテンツがあり、「中央」のパネルが空のままの場合、「中央」のパネルが2つの間にスペースを作成することがわかりました。 、

htmlの古い"のように。

ありがとう、

ベン

4

4 に答える 4

4

Jim が述べたように、コンポーネントを直線的に配置する必要がある場合は、BoxLayout が正しい選択です。

次に例を示します。

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author nicholasdunn
 */
public class BoxLayoutExample extends JPanel {

    public BoxLayoutExample() {
        JPanel topPanel = new JPanel();
        JPanel middlePanel = new JPanel();
        JPanel bottomPanel = new JPanel();

        topPanel.setBorder(BorderFactory.createEtchedBorder());
        middlePanel.setBorder(BorderFactory.createEtchedBorder());
        bottomPanel.setBorder(BorderFactory.createEtchedBorder());

        topPanel.add(new JLabel("Top"));
        middlePanel.add(new JLabel("Middle"));
        bottomPanel.add(new JLabel("Bottom"));

        BoxLayout boxLayout = new BoxLayout(this, BoxLayout.PAGE_AXIS);
        setLayout(boxLayout);
        add(topPanel);
        add(middlePanel);
        add(bottomPanel);

    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new BoxLayoutExample();
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

代替テキスト

LayoutManager の基本セットを理解するには、レイアウト マネージャーの概要をよく読んでください。複雑なレイアウトを行うときが来たら、GridBagLayout を学習しようとする代わりに、 MigLayoutを使用してください。ありがとうございます。

于 2010-11-22T14:27:58.167 に答える
2

垂直レイアウトを作成する場合は、囲んでいるコンテナーにBoxLayoutを使用することを検討することをお勧めします。これは、y軸に沿ってコンポーネントをレイアウトするように設定できます。

于 2010-11-22T10:43:13.530 に答える
1

コンポーネントにグリッドGridLayoutを作成するために使用できます。YxZレイアウトをより正確に構築するGridBagLayoutために、ネストされたコンポーネントの配置とサイズ設定を完全に制御できるを使用できます。

于 2010-11-22T10:37:14.707 に答える
0

私はいつもNetBeansを使用しています。なので、JPanelやJFrameにコンポーネントを配置するのに苦労することなくフリーデザインを作ることができます:)あなたはそれを考えるかもしれません。

于 2010-11-22T10:39:52.500 に答える