web-dev-qa-db-ja.com

jFrameに複数のjPanelを追加する

2つのjPanelをJFrameに並べて追加します。 2つのボックスはjpanelsで、外側のボックスはjframeです enter image description here

これらのコード行があります。 JPanelを拡張するSeatinPanelというクラスが1つあり、このクラス内にコンストラクターと、JPanelオブジェクトを返すutilityButtonsというメソッドがあります。 utilityButtons JPanelを右側に配置します。ここにあるコードは、実行時にutillityButtons JPanelのみを表示します。

public guiCreator()
    {
        setTitle("Passenger Seats");
        //setSize(500, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();

        seatingPanel seatingPanel1 = new seatingPanel();//need to declare it here separately so we can add the utilityButtons
        contentPane.add(seatingPanel1); //adding the seats
        contentPane.add(seatingPanel1.utilityButtons());//adding the utility buttons

        pack();//Causes this Window to be sized to fit the preferred size and layouts of its subcomponents
        setVisible(true);  
    }
11
dave

私がお勧めする最も柔軟なLayoutManagerは BoxLayout です。

次のことができます。

JPanel container = new JPanel();
container.setLayout(new BoxLayout(container, BoxLayout.X_AXIS));

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();

//panel1.set[Preferred/Maximum/Minimum]Size()

container.add(panel1);
container.add(panel2);

次に、コンテナをオブジェクトに追加してフレームコンポーネントに追加します。

27
Heisenbug

Swingが提供しなければならないレイアウトマネージャーを読んで学ぶ必要があります。あなたの状況では、JFrameのcontentPaneがデフォルトでBorderLayoutを使用し、より大きな中央のJPanel BorderLayout.CENTERと他のJPanel BorderLayout.EASTを追加できることを知っていると役立ちます。詳細はここにあります: コンテナ内のコンポーネントのレイアウト

編集1
Andrew Thompsonは、以前の投稿のコードでレイアウトマネージャーについて少し説明しました なぜボタンが表示されないのですか? 。繰り返しますが、チュートリアルを読んで理解を深めてください。