2009-05-02 11 views
-1

このコードは動作していました。私はいくつかのことを変更し、それを再実行し、今は意図したとおりに動作しません。明らかに私が変更したものが行動を変えましたが、私は戻ってその変化をすべて取り戻しましたが、それはまだ機能しません。その情報のビットを無視して(なぜなら)、このコードはJPanel内部に15x15のJLabelグリッドを配置しないのはなぜですか?JPanelが飛び出し、FlowLayoutが意図したとおりに動作しない

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です。それは好ましいサイズ、最大サイズ(好ましいと同じ)を有する。水平/垂直のサイズ変更可能なオプションは無効になっていますが、このコードが実行されるときに、すべてのボタンが1つの行で途切れることなく水平方向に拡張されます。

私が正しく理解していれば、FlowLayoutはエレメントが含まれているエレメントの終わりに達したときにエレメントをラップすることになっています。これは今日の前に起きていましたが、なぜこの行動が止まったのか分かりません。

答えて

-1

私はそれを理解しました。どうやらコード内にpreferredSizeを設定しなければならなかったのです。 Netbeansのプロパティウィンドウで設定するだけでは不十分です。奇妙な。

5

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

GridLayout gridLayout = new GridLayout(15, 15); 

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

+0

私は、代わりにコンポーネントがラップされない理由はなく、むしろ理由がないようにしたいと思います。 –

+3

ようこそ。 – Pool

+0

この回答がどのようにランクアップできるのか理解できません。それは、別の解決策と疑わしい指針を提供する、質問に答えることはありません! – Jeach

0

私は大きな成功を収めました&コントロールを使用してTableLayoutと誰にでもお勧めします。特定のピクセル数を使用して列&の行を定義するか、各列または行にTableLayout.PREFERREDを使用できます。非常に良い&フレキシブルレイアウト。私たちはどこでもそれを使用しています。

リビジョンコントロールシステムは素晴らしいです:どのように魚に男を教えるの利益のために

3

。あなたのシステムでも、あなたのソースを頻繁にバックアップしています。

有用なデバッグ手法は、動作するまで物事を取り除くことです。ボーダーを設定すると、コードが壊れます。逆に、問題を示す簡単なプログラムを書くことができますか?

関連する問題