2016-07-07 8 views
0

私はJavaで掃海艇のゲームを作成しています.JFrameをすべてのボタンを見ることができるように正確なサイズにする必要があります。 私はタイルの数ごとのサイズを計算しようとしましたが、実際には機能しませんでした。タイルのサイズによってJFrameを「自動サイズ」にする方法はありますか?java - 自動サイズJFrame

答えて

0

これを試してください。

((JFrame)myButton.getTopLevelAncestor()).pack();       

ここで、myButtonは、実行中にテキストが変更されたボタンです。

+0

私はボタンをどのように参照していますか? – roydbt

0

JFrameに.setBounds(x,y,width,height)メソッドを使用できます。 widthheightの場合は、画面にあるタイルの数を格納するint counterを作成します。私はあなたがタイルであるボタンを使用していると思いますか?だから、ユーザが難易度を選ぶならば、基本的にはボードのタイル数を選択しています。例えば簡単モード:20x20タイル、中モード:50x50タイルなど。簡単に選択した場合は、「Easy Mode」ボタンのactionListenerにある「20」にカウンタ番号を設定してください。yourJFrame.setBounds(0,0,counter,counter);これは四角いボード。

あなたは異なる形状をしたい場合は、x軸のための "counterX" に上記カウンタを変更後、別のint counterY'. This is for the y-axis. In this case, your code will be yourJFrame.setBounds(0,0、counterX、counterY)を作る; `

これは動作するはずです

+0

簡単モードの場合10x10タイルを使用しているので、コマンドは 'this.setBounds(0,0,10,10);'でなければなりません。 これはdisです私は持っているJMenuBarだけを再生します。 – roydbt

+0

@roydbt JFrameのサイズを設定するには、私の方法を使用してください。したがって、JFrameのサイズに対して、 'counterX'と' counterY'の値を10に設定してください。 '.setBounds(x、y、counterX、counterY);'を使用してください。これは、カウンタの値を変更するだけで済むため、難易度を増やしたい場合は非常に簡単です(これは超高速になります)。また、JSliderを使用してタイルの数を設定することもできます。スライダーを上に動かすと、カウンターの値を毎回「1」ずつ増加させることができます。ユーザーはプリセットの代わりに自分の難易度を設定できます –

+1

http://imgur.com/IdxiOakこれは最終的なプログラムです。コードは次のとおりです。 'int counterX = 10、counterY = 10; setBounds(0,0、counterX、counterY); ' コンストラクタ内からのものです。 – roydbt