1

私は、NetBeans を使用してスイングで UI を作成しました。
ユーザーがボタンを押すと、結果として JDialog が表示されるユースケースがいくつかあります。
JDialog は、少なくとも 4 つの JComboBox を介して入力を受け入れます。
たとえば、
ユーザーが「ButtonA」を押すと、次のように表示される JDialog が表示されます。

"select X:" combo  
"select Y:" combo  
"select Z:" combo  
"select O:" combo  etc  

つまり、各コンボの横に説明ラベルがあります。各 JDialog には、各コンボの他に、JCheckbox、JTextarea などの他のコントロールがいくつかあります。
ユーザーが「ButtonB」を押すと、次のような JDialog が表示されます。

"select A:" combo  
"select B:" combo  
"select C:" combo  etc  

したがって、ダイアログは同じではありませんが、プレゼンテーション形式にいくつかのパターンがあります。つまり、コンボボックスの使用。
最初に、単一の JDialog を作成し、JDialogs のラベルに表示する必要があるテキスト、および JCheckbox を表示するかどうか、JTextArea を表示するかどうか、およびどのテキストを使用するかなど、すべてパラメーターに応じて、いくつかの引数を渡します。 JDialog の初期化を渡して、すべてのユースケースに単一のクラスを持たせましたが、コードが非常に複雑になり始めたため、このアプローチを拒否しました。
私がしたことは、GUI デザイナーを介して、ボタンを押すたびに必要なだけの JDialog を作成し、約 10 ~ 11 個の JDialog を作成しました。
このアプローチにより、プログラミングがはるかに簡単になりましたが、入力用に10〜11個の追加クラスを作成したため、これが標準的な方法であるかどうかはわかりません.
私の質問は、私がしたことが合理的かどうか、またはこのような状況に対処するためのより良い方法があるかどうかです.
ありがとうございました!

4

1 に答える 1

3

JDialog を返す DialogBu​​ilder クラスを作成すると思います。


編集:

ダイアログの視覚的な作成とプログラムによる作成

私は、コードを記述してダイアログを生成することに慣れています。Java を使用する前は、GUI を使用してダイアログを作成する Delphi でコードを作成していました。最近はむしろ楽しんでいます。そうです、おそらく netbeans によって作成されたダイアログ コード (ほとんど) を捨てるでしょう。ダイアログが質問が示唆するよりも複雑でない限り。

複雑

はい、非常に複雑なコードを作成するために多くの時間を費やすことになる危険性があります。しかし、あなたが私のようであれば、それを行うことで多くのことを学ぶことができます. ここで学ぶことの 1 つは、その複雑さを回避するためにさまざまなパターンを使用する方法です。これらの問題を解決するための洗練された方法を見つけることは、私にとって非常に満足のいくものです。それは、私が最も楽しいと思うプログラミングの側面の 1 つです。

パラメーター

if argA&& argB && !argC then display JCheckbox「 10 から 11 の異なる jdialog の場合など」に関する懸念について言及する場合は、別の方向から問題にアプローチすることをお勧めします。たとえば、DialogBu​​ilder にラベルと JCombobox のペアのリストを渡すことができます。または、JCombobox を拡張して、追加のフィールドとそのラベルのゲッターを持たせることもできます。

例えば

DialogBuilder builder = new DialogFactory();
builder.add("Select X:", new Xcombo(...), true);  // with checkbox
builder.add("Select Y:", new Ycombo(...), false); // without
...
builder.getDialog.setVisible(true);

また

builder.add("Select X:", new MyCombo(xList), false);
builder.add("Select Y:", new MyCombo(yList), false);

DialogBu​​ilder.add(String, JComboBox, boolean) メソッドが何十もの複雑なif ... then ... else節を必要としないことが (私は願っています) わかります。

0.02 ドルの価値があります。

于 2010-11-14T15:48:09.570 に答える