0

作成中のプログラムのウィザードを作成しています。

3 つのクラスを組み合わせてウィザード フレームを構築し、新しいアイテムを作成するためのすべての関連情報を収集するために必要なすべてのパネルを表示します。

1 つ目は JPanel の抽象拡張であるため、特定の値とメソッドが常に使用可能です。以下を拡張した各クラスには、さまざまなコンボボックスやリストなどに入力するために必要なデータを渡すための独自のコンストラクターがあります。

public abstract class baseWizPanel extends JPanel {
  protected boolean isValid = false;
  protected final int lblWidth = 85; 

  public baseWizPanel(String Name) {
    setLayout(new BorderLayout(0, 0));

    JLabel lblStepName = new JLabel(Name);
  }

  public abstract boolean isDataValid();
  public abstract void validate();
  public abstract String getMessage();
}

2 つ目は、その baseWizardPanel を名前とともに収集するクラスです。これは、将来のリリースで他のものを格納するために使用されます。なぜそれを持っているのか疑問に思っている場合に備えて。

public class WizardStep {
  private String Name;
  private baseWizPanel pnlToAdd;

  public <T extends baseWizPanel> WizardStep(String n, T p) {
    this.Name = n;
    this.pnlToAdd = p;
  }

  public String getName() {
    return this.Name;
  }

  public Component getPanel() {
    return this.pnlToAdd;
  }
}

最後のクラスは JDialog の拡張であり、すべての要素をまとめて段階的なプロセスとしてユーザーに提示します。

以前は、これに似た方法でウィザードを実装していました。

  1. 関連するすべてのデータをロードします。
  2. WizardStep の ArrayList を作成する
  3. ArrayList.add(new WizardStep("name", new baseWizPanel(arguments))); を使用して配列を構築します。
  4. Wizard クラスをロードして表示する

これは、ウィザードを作成してユーザーに表示するのに問題なく機能します。私が今やりたいことは、データのすべてのロードを 1 か所に保持するために作成した汎用データ ロード関数を使用することです。クラスの ArrayList からウィザードを作成できるようにする必要があります。

だから行きたい

public class loadData {
  loadData(ArrayList<class> classestoload)


  dataset1 = load data from data source
  dataset2 = load data from data source
  dataset3 = load data from data source
  dataset4 = load data from data source
  dataset5 = load data from data source

  for each class in classestoload {
    create class

    if class = class1 {
       use class1 constructor with dataset 1 & 2
    }

    if class = class2 {
       use class1 constructor with dataset 5
    }

    if class = class3 {
       use class1 constructor with dataset 2 & 3
    }

    if class = class4 {
       use class1 constructor with dataset 4 & 5
    }
  }
}

Create new object from a string in Javaのコードを使用して、必要なクラスを作成できますが、コンストラクターを使用して、クラスを知る必要がある正しいデータを渡すには、instanceof を使用できますが、読んだことはすべて、これはいい選択じゃない。

ここで私の質問は、instanceof を使用する必要がないように、または instance of の代わりに何を使用する必要がないように、ここで何をすべきかということです。

4

0 に答える 0