2012-03-02 23 views
2

私は内部にテキストフィールドを持つフローレイアウトパネルを持っています。テキストフィールドはそれほど広いわけではありませんが、次の行にコンポーネントを配置したいと思います。残りのスペースを空のボックスで埋めるにはどうすればよいですか?FlowLayoutの空き領域を埋めてください

+1

希望するものを実行するLayoutManagerを使用 – kleopatra

+1

'FlowLayout'を使って左端にコンポーネントを配置するには、' panelObject.setLayout(new FlowLayout(FlowLayout.LEFT)); 'を実行します。引数が 'FlowLayout()'コンストラクタではないので、中間からではなく極端な左からコンポーネントを配置することができます。 –

+1

あなたのコメントは、15回のキーストロークで問題を解決しました@nIcEcOw。どうもありがとう。そのような有用なコメントは答えとして掲示されるべきです。 :-) –

答えて

3

あなたのコンポーネントがレイアウトされている方法をより確定的に制御する必要がある場合は、あなたがそのようなBoxLayout、GridLayoutの、またはGridBagLayoutのよう別のレイアウトマネージャを使用することを検討すべきです。あなたは、あなたが望むことをするためにFlowLayoutを騙すことができるかもしれませんが、ユーザがウィンドウのサイズを変更するとどうなりますか?または、OSレベルでフォントDPIを変更しますか? FlowLayoutにダミーコンポーネントを追加する副作用としてコンポーネントを別の行に置くのではなく、これらの概念が組み込まれているレイアウトマネージャー(例:GridBagConstraints.gridy)で、上記/下の関係をより明示的に表現することを検討してください。

+0

うん、1+に同意してください。また@Soler:それぞれ独自のレイアウトマネージャを使用してJPanelをネストすることができ、複雑なGUIを作成することができますが、単純なレイアウトを使用するだけです。 –

2

は空JPanelでそれを埋める:

new JPanel(); 
+0

しかし、私はJLabelをすでにパネルの中に入れています。これは現在、いくつかの奇妙な理由のために中心に置かれています。左にシフトする。 ラベルを左にずらしたいのですが、何とか空のスペースを追加する必要があります。JPanelはこれで動作しないようです。 –

+0

いいえ - それはハッキングではありません(ただし、問題は奇妙です) – kleopatra

1

ここでは複雑にする必要はありません。この単純な解決策は、(少なくとも、それは私のためにやった)作品:

panelObject.setLayout(new FlowLayout(FlowLayout.LEADING)); 

これは、左から右方向を読んで、デフォルト(それが向きと呼ばれる)、および逆の方法でコンピュータ上の左にコンポーネントをフラッシュします右側からの読み取り方向のコンピュータでしたがって、国際化に役立ちます。すべてのコンピュータでコンポーネントを左に(そして空のスペースを右に)使用する場合は、new FlowLayout(FlowLayout.LEFT)を使用します。

@nIcE cOwのおかげで、この解決策をこの質問の下のコメントに示唆し、回答として投稿できるようにしました。

関連する問題