2

私は Java の初心者ですが、Wizardクラス (org.eclipse.jface.wizard.Wizard)を使用してウィザードを作成しようとしています。

Wizard基本的に、コンストラクターで拡張する場所はaddPage、必要な 2 つのページです。

最初のページで、いくつかの資格情報を取得します。

2 番目のページでは、最初のページの資格情報を使用してデータベースに対してクエリを実行し、テーブルに名前を入力します。

これらの値を最初のページから 2 番目のページに渡すにはどうすればよいですか?

すべての意図と目的に対して、現在の私のコードはhttp://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htmと同じですが、最初のページのいくつかのテキストボックスからいくつかの文字列を取得し、 2ページ目に表があります。

コンテナについて読んだところ、setData() メソッドがあることがわかりました。これは利用できますか?

よろしくお願いします

デビッド

4

3 に答える 3

5

Wizard でデータ オブジェクトを作成し、それを各 WizardPages のコンストラクターに渡すのが好きです。例えば:

public void addPages() {
  data = new MyData()
  addPage(new FirstPage(data));
  addPage(new SecondPage(data));
  ...
}

このアプローチの利点の 1 つは、ウィザードの performFinish 中にデータ オブジェクトにアクセスできることです。

于 2010-07-01T14:30:14.347 に答える
3

これを行う別の方法を次に示します。

PageOne pageOne = (PageOne) getWizard().getPreviousPage(this);

PageTwo を使用していて、PageOne で PageTwo で使用する値のゲッターを定義したとします。

于 2011-09-14T17:28:46.513 に答える
0

もう 1 つの方法は、静的変数でデータ クラスを使用することです。たとえば、NewVehicleWizard がある場合、Car、Truck、または SUV (Vehicle のすべてのサブクラス) をインスタンス化する必要がある場合があります。しかし、それはウィザードがインスタンス化されたときにはわかりません。その決定は VehicleTypePage で行われ、オプションのトラックが選択されたときに次のメソッド呼び出しを行うことができます。

MyWizardData.setVehicle(new Truck());

MyWizardData には、静的なゲッターとセッターを備えたプライベートな静的車両変数があります。後続のページまたは NewVehicleWizard 自体で車両オブジェクトが必要な場合は、単純に静的ゲッターを使用できます。

Truck truck = (Truck)MyWizardData.getVehicle();
// ...work with truck here
于 2011-04-16T19:43:54.073 に答える