0

基本的に私はこのセットアップを持っています

    | JFrame with BorderLayout   |
    | -------------------------- |
    | JPanel with GridBagLayout  |
    | JPanel with NullLayout     |

JFrameはサイズ変更可能です。GridBagLayoutを使用するJPanelには、そのeltゲインJPanelsが含まれており、基本的に次のようになります。

    |Obj|Obj|Obj|
    |Obj|Obj|Obj|
    |Obj|Obj|Obj|

グリッドは2次式である必要があります。

ウィンドウのサイズを変更すると、コンポーネントが自動的に調整されます。これにより、グリッドはその二次的な寸法を失い、長方形になります。

自分のレイアウトマネージャーを書くことでこれを防ぐことができます。だからあなたへの私の質問:二次グリッドを強制する別の可能性はありますか?

4

2 に答える 2

1

を使用する代わりに、 MigLayoutGridBagLayoutの使用を検討してください。

null各コンポーネントの幅と高さを行数または列数で割った幅または高さとして設定するレイアウトを使用することもできます (方法に応じて)。これに従って初期値と値xを設定します。y

(total width % number of columns) / 2

およびその他は単純
initialX + cellWidth * (col - 1)に and にし
initialY + cellWidth * (row - 1)ます。

このコードをcomponentResized(ComponentEvent e){...} middleJPanelのメソッドに入れComponentListener、境界を設定するセル (パネル) を循環します。これは遅い/手動の方法かもしれませんが、サイズを変更する方法を正確に完全に制御できます。

于 2012-01-31T14:57:31.703 に答える
0

http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/index.html問題を解決する可能性のある GridBagLayoutDemo と SpringGridDemoのサンプルを見てください。または、最後のエスケープとして、GridLayoutDemo のようにウィンドウをサイズ変更不可 (悪い!) にします...

于 2012-01-31T14:55:52.093 に答える