2016-04-28 16 views
0

数十人のレイアウトマネージャがいますので、自分のプロジェクトでMiGLayoutと置き換えることにしました。その理由は、プロジェクト全体で1つのレイアウトマネージャを使用していることです。レイアウトのルールはすべてのコンポーネントで同じです。マネージャの柔軟性が巨大なので、このアイデアは魅力的でした。私はすべての複雑なビルトインJavaレイアウトマネージャ。MiGLayoutは悪い習慣を強制するか、私はその使い方を誤解していますか?

ドキュメントに書かれているように、MiGLayoutはGUIをレイアウトするときに文字列をargsとして取ります。さらに、1つの文字列(1つの引数)には、レイアウトマネージャ用の複数の命令を含めることができます。もちろん、チェーンメソッドを使用することはできますが、私が理解するように、この方法はMiGLayoutの 'デフォルト'ではないため、MiGLayoutのドキュメントでは推奨されません。 MigLayoutを使用しているときに誤った命令を誤って1つの文字列に入れることがあり、コンパイル時にエラーが発生しません(メソッドには文字列が必要で、文字列が渡されます - コンパイラは考える)。実行時にエラーが表示されます - 私のプログラムはjava.lang.IllegalArgumentExceptionで失敗します(理由はMiGLayoutクラスでは「Illegal Constraint」です)、良いアイデアはありません。どのように正常に処理できるのですか?例外のレベルは私の頭痛です)。とにかく、私のコードレイアウトマネージャの例外処理を追加するエレガントな方法を見つけたとしても、 'multiarg'文字列をargとして使用するというコンセプトは、コードの誤りを引き起こすので、悪い習慣であるようです(そして、将来のエラーは、IDEによってハイライトされません)。一般に、コンパイル時から実行時に潜在的なエラーを運ぶことは良い方法ではありません。しかし、MiGLayoutは、公式のOracle Using Layout Managersのチュートリアルで言及されている広く使用されているレイアウトマネージャです。GUI開発中に悪い習慣を強いると、あまり人気がないと思います。したがって、私はMiGLayoutを概念を使って誤解していると感じています。経験豊富なMiGLayoutユーザーからの説明に感謝します。

+0

** ilegal Constraint **をmiglayout制約として渡した場合、どのように**正常に**処理することが期待されますか? UIは表示されません。だから、私は基本的にそれを使用するための制約の構文を学ぶべきだと感じています。複数の引数を渡す必要があるという記述についても、間違った引数を渡した場合、 '' cell 0 1 ''の代わりに' 'cell 1 0'' 'と言うと、コンポーネントは表示されますが、間違った場所。 – Blip

答えて

0

他の方法で設定を適用できるのであれば、実際にはを強制して、悪い習慣になることはないようにしてください。それはあなたに型安全な方法と非形式的な方法を与えています。

レイアウト設定が外部に保存されている場合、たとえばプログラム内のレイアウトを変更して次回の設定を保存するプログラムでは、非スタイルセーフな方法が不可欠です。

Javaのの型保証言語ですが、レイアウトを保存する必要のないプログラムでどちらかを使用する必要がありますか。

関連する問題