Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
KlassenKonstruktor Parameter als Instanzvariablen zwischen speichern...
folgende Begebenheit stellt mich vor ein Rätsel. Vielleicht kann mich einer von Euch aufklären.
Eine Klasse (s. u.) nimmt am Konstruktor einen Parameter entgeben. Diesen will ich in einer Instanzvariablen zwischen speichern. Das funktioniert, wenn ich das als eines der ersten Anweisungen im Konstruktor tue. Weiter unten, nach dem Aufruf von setScene(...) funktioniert das nicht mehr. Dann speichere ich NULL ab.
Warum ist das so??
VG Holger
Code:
public class DialogProfilPlan extends Stage implements Initializable {
private ProfilPlan profilPlan;
@FXML
private TextField textField;
public DialogProfilPlan(ProfilPlan profilPlan) {
setTitle("Profil Plan");
// an dieser Position funktioniert
// das Zwischenspeichern des Parameters
// 'profilPLan'
//
this.profilPlan = profilPlan;
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("DialogProfilPlan.fxml"));
fxmlLoader.setController(this);
// an dieser Position würde es auch
// funktionieren, das Zwischenspeichern
// des Parameters 'profilPLan'
//
try {
setScene(new Scene((Parent) fxmlLoader.load()));
} catch (IOException e) {
e.printStackTrace();
}
// an dieser Position funktioniert
// das Zwischenspeichern des Parameters
// 'profilPLan' NICHT !!! Warum??????
//
// this.profilPlan = profilPlan;
initModality(Modality.APPLICATION_MODAL);
initStyle(StageStyle.UTILITY);
initOwner(BMCheck.getPrimaryStage());
setResizable(false);
}
@FXML
void onOkButtonAction(ActionEvent event) {
close();
}
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
System.out.println(profilPlan);
}
}
Erstens ist es nie eine gute Idee den parameter genau so zu nennen wie die Instanzvariable. Das führt sehr schnell mal zu ganz schwer zu findenden Fehlern. Ich halte es in der Regel so, dass ich bei dem Parameter Namen dann komplett Kleinschreibung nutze oder eben ein p_ voran stelle
Hast du mal debugged, ob die untere codestelle überhaupt erreicht wird bevor du deine instanzvariable abfragst? Schließlich erzeugt das setscene ja wahrscheinlich einen UI task in dem dann die weitere app Funktionalität stattfindet.