4

ここに来る前に作成されたアプリケーションにチェックボックスを追加する必要がありましたが、アプリが疑似絶対グリッドのような配置を試みるサードパーティのLayoutManagerを使用しているため、必要以上に困難でした。APIはひどいもので、2つ、4つ、または6つのパラメーターのコンマ区切りリストである位置指定文字列が必要です(これがなぜ変化するのかはまだわかりません)。むしろ、LayoutManagerにこれの多くを処理させたいと思います。とにかく、うなり声の仕事。私は常に、Swingが物事自体を配置できるようにすることで、私が生成できるものよりも優れた組織化につながったと感じてきました。CGIアプリケーションでも同じように感じました。チェックボックスやラジオボックスをテーブルでグループ化することを除けば、ユーザーが望むようにブラウザをフローさせてラップするだけです。

Swingに含まれているLayoutManagerの実装は適切ですか、それとも、この種の絶対制御を組み込んで、レイアウトを正確に希望どおりにする(そして、さらに100万以上の決定を下す)必要がありますか?

4

9 に答える 9

6

この状況はかなり良くなっています。最も一般的な非標準のレイアウト マネージャーは次の 3 つです。

  • JGoodies FormLayout
  • テーブルレイアウト
  • MigLayout

最後の 2 つはかなり似ていますが、MigLayout は少し後に登場し、将来的に JDK の一部になる予定です。3 つのうちどれも、かなり快適に使用するのに十分な「標準」を備えていると言えますが、MigLayout が勝つ可能性が高く、Swing 自体の一部になる可能性があります。

ですから、現時点ではノーと言えます。MigLayout が JDK に入ったら、はい。

于 2008-11-25T21:00:11.523 に答える
4

個人的には、Javaレイアウト管理の概念は、スライスされたパン以来最もクールなものだと思います。サイズ変更可能なウィンドウに不可欠-抽象レイアウトマネージャーを使用することをお勧めするために、サイズ変更できないWindowsのすべてのウィンドウを確認してください。

とはいえ、Javaのレイアウトマネージャーは適切ですが、必要な場所に到達するにはかなりの量のネストが必要です。その入れ子は物事を変えるのを面倒にします。BoxLayoutとBorderLayoutを主食として調べてください。GridBagLayoutは、最後の手段としてのみ使用してください。

最適なオプションは、適切なテーブル指向のレイアウトを組み込んで、ネストを最小限に抑えることです。他の人はすでにいくつかを提案しているので、繰り返しません。文字列ベースの制約と小さなフットプリントが必要だったので、自分でロールしましたが、それ以外の場合はTableLayoutにかなり誘惑されました。配布サイズが問題にならない場合は、jGoodiesが提供するウィジェットとレイアウトを絶対に確認する必要があります(無料だと思いますが、非営利目的でのみ使用できますか??)

私は通常、ウィンドウにテーブルレイアウトを使用し、場合によってはネストされ、関連するコンポーネントの実行には通常1レベルの深さで終了します。たとえば、電話番号の3つのボックスは、間にあるダッシュの2つのラベルで区切られます。私のウィンドウは非常にメンテナンスしやすく、ウィンドウに追加したり変更したりするのは簡単です。

PS:疫病のような絶対的なポジショニングは避けてください

于 2008-11-25T22:34:48.820 に答える
3

Swingのレイアウトマネージャーは、一般的に、あなたがやろうとしていることを何でもするのに十分です。「最悪」では、完全なGridBagLayoutを使用し、座標を使用して各コンポーネントを独自に配置する必要があります。あなたの質問から、あなたの会社は、奇妙な入力スキームを使用してコンポーネントを追加できるようにすることで、カバーを書いたようです。組み込みのマネージャーが必要なことを実行できないことや、簡単に結合して必要なことを実行できないことを実際に説明できない限り、新しいレイアウトマネージャーを作成しないことをお勧めします。

于 2008-11-25T20:59:50.430 に答える
3

私の経験では、少しのネスティングを行う準備ができていれば、それらは十分です (場合によっては、たくさんのネスティング!)。

いずれにせよ、私は常に、レイアウト マネージャーがその価値よりも厄介であることに気付きました。

于 2008-11-25T21:01:13.003 に答える
1

あなたの説明から、TableLayoutを使用している可能性があります。もしそうなら、これは多くの点で標準のレイアウト マネージャーよりも優れていることがわかりました。それが TableLayout である場合は、ドキュメントを読んでみてください。そうすれば、配置パラメーターの数が異なる場合がある理由を理解できます。TableLayout を使用すると、文字列を使用せずに、これらのパラメーターを別の方法で設定することもできます。

于 2008-11-26T19:12:05.717 に答える
1

私は Swing レイアウト マネージャーの大ファンではありませんでしたが、多くの Motif を作成したことで Swing にたどり着きました。それが何であるかはわかりませんが、Swing には、下にネストされたものを「押し出し」、それよりも高いものを、それらを収めるのに十分な大きさにする能力があるようには思えません。また、私は XmForm の大ファンで、Swing にはそのようなものはありません。

とはいえ、Swing では 90% の時間、入れ子になった Box を使用します。通常は、垂直ボックス内の水平ボックス内に垂直ボックスを配置します。時々、もっと制御が必要になり、GridBagLayout と震えのマニュアルを作成しました。

于 2008-11-25T21:00:18.027 に答える
0

上記の3つのサードパーティのレイアウトマネージャーに加えて、DesignGridLayoutを試してみることをお勧めします。これは、MigLayoutほど強力ではありませんが、はるかに使いやすく、悪いフォームの設計を困難にします。

免責事項:私はDesignGridLayoutの作成者の一人ですが、これはSwingのデフォルトのレイアウトや、開始するには少し複雑すぎる他のサードパーティのレイアウトと比較して、優れたLayoutManagerであると本当に信じています。

于 2008-12-02T06:42:12.503 に答える