1

JButton の 3 つの異なる配列を作成するために、3 つの for ループを作成しました。次に、これを Gridlayout に入れました。左側と右側はうまくいきますが、中央はパネルを埋めるだけです.

右側のコードは次のとおりです。

        rightPanel = new JPanel();
    rightPanel.setLayout(new GridLayout(12, 4, 5, 5));
    rightPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10));


    for (int a = 0; a < 12; a++) {
        for (int b = 0; b < 4; b++) {
            battons[b][a] = new feedbackKnop.RechterKnop();
            battons[b][a].setPreferredSize(new Dimension(50, 50));
            rightPanel.add(battons[b][a]);
            battons[b][a].setEnabled(false);
        }
    }

センターのコードは次のとおりです。

        btnPanel = new JPanel();
    btnPanel.setLayout(new GridLayout(12, 4, 5, 5));
    btnPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10));

    for (int i = 0; i < 12; i++) {
        for (int j = 0; j < 4; j++) {
            buttons[j][i] = new KleurenButton("");
            buttons[j][i].setPreferredSize(new Dimension (50, 50));
            btnPanel.add(buttons[j][i]);
            buttons[j][i].setEnabled(false);

        }

    }

右側の丸のような大きさにしたい

結果:

結果

4

2 に答える 2

1

GridLayout はすべてのグリッドを同じサイズにし、BorderLayout は中央を拡大してウィンドウを埋めます。これを修正するには、ウィンドウ サイズを強制的に固定する (または特定の縦横比にする) か、コンポーネントが自動的に展開されない別のレイアウトを選択する必要があります。 GroupLayoutは非常に人気があります。

于 2013-03-12T21:48:49.623 に答える
1

コメンターが示唆しているように、これは BorderLayout の問題です。BorderLayout には「貪欲な」CENTER パネルがあります。つまり、デフォルトでは、そこにある JComponent が何であれ、全体のサイズに引き伸ばされます。これは、preferredSize を使用する境界 (NORTH、SOUTH など) とは異なります。そのため、左右のパネルが引き伸ばされていません。

簡単な解決策 (レイアウトを大幅に変更しない) は、中央に JPanel を追加し、それに FlowLayout を指定してから、中央グリッド パネルをそれに追加することです。理想的ではありませんが、ビューのプロトタイプを作成する手っ取り早い方法になる可能性があります。

于 2013-03-12T21:59:30.750 に答える