2010-07-01 4 views
2

Je suis un novice Java mais essaie de produire un assistant en utilisant la classe Wizard (org.eclipse.jface.wizard.Wizard)passage de variables de l'assistant de JFace

Au fond où je tends la Wizard dans le constructeur I addPage les deux pages que je veux.

Sur ma première page, je prends quelques informations d'identification.

Sur la deuxième page, je veux exécuter une requête sur la base de données en utilisant les informations d'identification de la première page pour remplir une table avec des noms.

Comment puis-je transmettre ces valeurs de la première à la deuxième page?

À toutes fins utiles mon code est actuellement le même que http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Asurveyusingawizard.htm sauf que j'obtiens quelques chaînes de certaines zones de texte sur la première page et que j'ai un tableau sur la deuxième page.

J'ai lu à propos des conteneurs et je vois qu'il existe une méthode setData(), est-ce quelque chose que je peux utiliser?

Amicalement à l'avance

David

Répondre

5

J'aime créer mon objet de données dans l'Assistant et le transmettre dans le constructeur de chacun de mes WizardPages. Par exemple:

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

Un avantage de cette approche est que vous avez accès à votre objet de données pendant les performFinish de votre assistant.

+0

Merci, c'est si évident que j'avais oublié. Jolie idiote de moi ... – David

0

Une autre approche consiste à utiliser une classe de données avec des variables statiques. Par exemple, si vous avez un NewVehicleWizard, vous devrez peut-être instancier Car, Truck ou SUV (toutes les sous-classes de Vehicle). Mais cela ne sera pas connu lorsque l'assistant est instancié; cette décision sera prise dans un VehicleTypePage, ce qui pourrait faire l'appel de méthode suivante lorsque le camion d'option est sélectionnée:

MyWizardData.setVehicle(new Truck()); 

MyWizardData auront une variable statique véhicule privé avec getter statique et poseur. Si l'objet du véhicule est nécessaire par une page suivante ou par le NewVehicleWizard lui-même, vous pouvez simplement utiliser le getter statique:

Truck truck = (Truck)MyWizardData.getVehicle(); 
// ...work with truck here 
3

Voici une autre façon de le faire:

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

Supposons que vous êtes sur PageTwo , et dans PageOne vous avez défini vos getters pour les valeurs que vous souhaitez utiliser sur PageTwo.

Questions connexes