-1

先日、このコードは機能していました。いくつか変更して再実行しましたが、意図したとおりに機能しません。明らかに、私が変更したものによって動作が変更されましたが、戻ってそれらの変更をすべて元に戻しましたが、それでも機能しません。(開始するために)そのビットの情報を無視して、なぜこのコードはJPanel内にJLabelの15x15グリッドを配置しないのですか?

gameBoard.setLayout(new FlowLayout());

for (int i = 0; i < 15; i++)
{
    for (int j = 0; j < 15; j++)
    {
        JLabel tile = new JLabel("");                       
     tile.setHorizontalAlignment(SwingConstants.CENTER);
        tile.setPreferredSize(new Dimension(27, 27));
        tile.setBorder(new EtchedBorder());
        tile.setEnabled(false);

        gameBoard.add(tile);
    }
}

gameBoardは、NetBeansのGUIビルダーを介して定義されたJPanelです。推奨サイズ、最大サイズ(優先と同じ)があります。水平/垂直のサイズ変更可能なオプションは無効になっていますが、このコードを実行すると、すべてのボタンが途切れることなく水平方向に連続して拡張されます。

私が正しく理解していれば、FlowLayoutは、要素が含まれている要素の最後に到達したときに要素をラップすることになっています。これは今日以前に起こっていました、なぜこの振る舞いが止まったのか本当にわかりませんか?

4

4 に答える 4

5

GridLayoutを使用する方がはるかに良いでしょう。

GridLayout gridLayout = new GridLayout(15, 15);

新しいルックアンドフィールの使用、フォントの違い、またはJava VMのアップグレードにより、フローレイアウトが変更された可能性があります。仮想マシンやルックアンドフィールによって異なる可能性のある基本的なサイズに依存しているため、この用途のフローレイアウトを定義することはお勧めしません。

于 2009-05-02T16:58:33.573 に答える
0

TableLayoutを使用して大きな成功と制御を見つけたので、誰にもお勧めします。特定のピクセル数を使用して列と行を定義することも、各列や行に使用することもできますTableLayout.PREFERRED。とても素敵で柔軟なレイアウト。どこでも使用しています。

于 2009-05-02T17:18:22.417 に答える