0

私は Swing の一種の画像ギャラリー (基本的には jscrollpane のビュー) に取り組んでいますが、少し行き詰まっています。

MigLayout を変更して、必要な追加機能を提供できるようにしました。

私はロジックのいくつかの部分を持っています。決定を下すために、100% の幅、列の数、最大のコンポーネントなど、特定の制約の下でビューをレイアウトする必要があります。特定のズームレベルの下の列など

しかし、これらの「テスト」を行っているときにコンポーネントがちらつくのを見たくありません。そこで、コンポーネントのコピーを使用して 2 番目の孤立した JPanel を作成することで、最終的な効果的なビューに影響を与えることなくこれらの「テスト」を実行できるようにしています。しかし、このソリューションは、私には少し失敗していて、少し遅いように思えます。これらのテストの実行中に「setBounds」を無効にするなどのこともできますが、それも良くありません。

これらのテストを行わないことが最善であることはわかっていますが、それは行うよりも言う方が簡単に聞こえます。とにかく、私はそれについても納得していません。

この状況に陥ったことはありますか?

ありがとう

4

1 に答える 1

2

最初にレイアウトする必要はありません。LayoutManager最初にサイズを計算するメソッドがあります

Dimension preferredLayoutSize(Container parent);

/**
 * Calculates the minimum size dimensions for the specified
 * container, given the components it contains.
 * @param parent the component to be laid out
 * @see #preferredLayoutSize
 */
Dimension minimumLayoutSize(Container parent);

/**
 * Lays out the specified container.
 * @param parent the container to be laid out
 */
void layoutContainer(Container parent);

したがってcalculatePreferrence()、コンテナーの子の最小/最大/優先サイズを使用して目的のサイズを把握し、preferredLayoutSize (および minimumLayoutSize) で返すメソッドを作成することをお勧めします。次に、計算を使用します。

于 2013-06-21T05:19:51.217 に答える