2

私はまだ JavaSwing で BorderLayout を理解しようとしていますが、本当にイライラします。

ペインを 3 つの含まれるサブパネルに分割できるようにしたいのですが、それを含める方法が完全にはわかりません。

これが、パネル ControlPanel、StatePanel、および Board (実際には JPanel の単なる拡張) を含む、私のクラス Game です。パネルを次のように 3 つのセクションに分割します。 シンプルな絵

これまでの私のコードは次のとおりです。

public class Game extends JPanel {
    private int panespace=2;
    private JPanel ControlPanel;
    private JPanel StatePanel;
    private Board board;
    public Game()
    {
         setLayout(new BorderLayout(panespace, panespace));
         ControlPanel=new JPanel();
         ControlPanel.setLayout(new BorderLayout(panespace, panespace));
         ControlPanel.setBorder(new LineBorder(Color.red, 10));
         ControlPanel.setSize(100,100);
         super.add(ControlPanel, BorderLayout.EAST);
         StatePanel=new JPanel();
         StatePanel.setLayout(new BorderLayout(panespace, panespace));
         StatePanel.setBorder(new LineBorder(Color.green, 10));
         StatePanel.setSize(200, 200);
         super.add(StatePanel, BorderLayout.EAST);
         board = new Board();
         board.setLayout(new BorderLayout(panespace, panespace));
         board.setBorder(new LineBorder(Color.yellow, 10));
         board.setSize(300, 300);
         super.add(board, BorderLayout.NORTH);
         setVisible(true);
    }
}

できれば、これは BorderLayout を使用しますが、間違っているようです。オラクルが提供する資料を読んでみましたが、特に役に立ちませんでした。この時点で、値をハードコーディングしたいところですが、各パネルができるだけ多くの大きなゲームパネルを占めるように分割できる必要があることはわかっています。

4

3 に答える 3

3

mkhelif が言ったように、同じスロットに 2 つのものを持つことはできません。あなたが望むのはboard、 に入りCENTER、次に含む別JPanelのものを作成することです。SOUTHControlPanelStatePanelFlowLayout

于 2012-10-12T07:16:46.963 に答える
1

East / Eastのものに加えて、JFrameの代わりにJPanelも拡張します。つまり、あなたが持っている場所

public class Game extends JPanel

あなたはおそらくしたい

public class Game extends JFrame

また、境界線を設定しますが、パネルには何も配置しないため、境界線は空のスペースを囲み、実際の境界線ではなく太い線のように見えます。各パネルにJTextAreaを追加してみてください。

また、境界線をドラッグしてサイズを変更すると、CENTERセクション(使用しない)が大きくなります。希望する結果が必要な場合は、別のレイアウトを使用する必要があります。

幸運を!

于 2012-10-12T07:41:30.463 に答える
1

EAST の両方に ControlPanel と StatePanel を追加しています。ControlPanel を WEST に追加してみてください。

于 2012-10-12T07:14:11.337 に答える