2

BorderLayout マネージャーを使用して JPanel 内に 4 つの JPanel を持つ GUI を構築するために、swing を使用しています。

  1. ラベルの行
  2. JButton の列
  3. 表示領域(JPanelを拡張した何も追加していない描画領域として使用するクラスです)
  4. ボタンの別の列

私のコードは次のようになります。

    JPanel middle = new JPanel();
    middle.setLayout(new BorderLayout());
    middle.add(midLabels,BorderLayout.NORTH);
    middle.add(pickupButtons,BorderLayout.WEST);
    middle.add(simulation,BorderLayout.CENTER);
    middle.add(dropButtons,BorderLayout.EAST);

シミュレーション パネルは、paintComponent をオーバーライドして画像を描画する単なる拡張 JPanel です。問題は、シミュレーション エリアが中央ではなく左側にあることです。

間違ったレイアウト

私が実際に欲しいのは:

ここに画像の説明を入力

編集、ここに例を示します。空の JPanel を正しく配置するには、別のレイアウト マネージャーを使用する必要がありますか?:

import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {  
    final static int MAXFLOORS = 8;
    public Test() {
        setLayout(new BorderLayout());
        setTitle("Simulator");
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(500, 500);

        JPanel simulation = new JPanel();
        JPanel dropButtons = new JPanel();
        JPanel pickupButtons = new JPanel();

        pickupButtons.setLayout(new GridLayout(MAXFLOORS, 1));
        dropButtons.setLayout(new GridLayout(MAXFLOORS, 1));
        setLayout(new BorderLayout());      
        add(simulation,BorderLayout.CENTER);
        add(dropButtons,BorderLayout.EAST);
        add(pickupButtons,BorderLayout.WEST);

        for (int i = MAXFLOORS; i != 0; i--) {
            JButton pb = new JButton("F" + i);
            dropButtons.add(pb);

            JButton db = new JButton("F" + i);
            dropButtons.add(db);
        }       
        repaint();
    }
    public static void main(String[] args) {
        new Test();
    }
}
4

1 に答える 1

3

あなたのコードを見てください:

    for (int i = MAXFLOORS; i != 0; i--) {
        final JButton pb = new JButton("F" + i);
        dropButtons.add(pb);

        final JButton db = new JButton("F" + i);
        dropButtons.add(db);
    }

dropButtonsの代わりに2回追加していますpickupButtons

于 2012-04-09T22:03:58.863 に答える