0

スカイプのように連絡先リストの ui を実装する必要があります。JPanelから派生したカスタムクラス(JContact)で表現される連絡先。さまざまなレイアウトを使用しようとしましたが、期待どおりの結果が得られませんでした。メインフレームは次の構造です。

JFrame -> JPanel(contactsPanel) -> JScrollPane(scrollContacts) -> JPanel(contactPanel)

scrollContacts.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_​​ALWAYS); scrollContacts.setHorizo​​ntalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_​​NEVER);

contactPanel に FlowLayout を使用する場合 (画像の FlowLayout を参照)

scrollContactsのHORIZONTAL_SCROLLBAR_​​NEVERを示すため、各連絡先が1つになると予想されるため、奇妙な動作だと思います。

グリッドまたはボックス レイアウトを使用する場合。レイアウトは自動的にパネルのサイズを変更しますが、見栄えが非常に悪くなります。Grid&Box レイアウトの画像を参照してください。

期待される結果 「期待される」画像を参照

----画像を見る----

私はネイティブ スピーカーではないので、下手な英語で申し訳ありません。

4

1 に答える 1

1

Swingチュートリアルを引用:

FlowLayout クラスは、コンポーネントを適切なサイズに並べて配置します。コンテナー内の水平方向のスペースが小さすぎてすべてのコンポーネントを 1 行に配置できない場合、FlowLayout クラスは複数の行を使用します。

したがって、得られる結果が期待されます。

GridLayout オブジェクトは、コンポーネントをセルのグリッドに配置します。各コンポーネントはそのセル内で使用可能なすべてのスペースを使用し、各セルはまったく同じサイズです。GridLayoutDemo ウィンドウのサイズが変更された場合、GridLayout オブジェクトはセル サイズを変更して、コンテナーで使用可能なスペースを考慮して、セルができるだけ大きくなるようにします。

したがって、得られる結果も期待されます。

BoxLayout がコンポーネントを上から下にレイアウトするとき、各コンポーネントのサイズをコンポーネントの優先高さに合わせようとします。レイアウトの垂直方向のスペースが適切な高さの合計と一致しない場合、BoxLayout はコンポーネントのサイズを変更してスペースを埋めようとします。

したがって、得られる結果も期待されます。

ただし、ボックス レイアウトには、それを避けるために接着剤コンポーネントを含めることができます。

したがって、縦型のボックス レイアウトを使用し、最後のコンポーネントとして縦型の接着剤を追加します。チュートリアルを読んでください。

于 2012-12-08T12:18:36.647 に答える