Hallo Profis! Ich plage mich gerade mit einer grundsätzlichen Frage zur Pogrammstruktur mit JavaFX. Ich habe eine Oberfläche mit dem SceneBuilder erstellt und darin befindet sich eine "TextArea". Nun wird dort das alles schön in 3 Dateien aufgespalten: - FXMLDocument.fxml (für die graphische Oberfläche) - FXMLDocumentController.java (worin der eigentliche Code enthalten sein soll) - Anwendung.java (das "Programm-Gerüst") In der TextArea möchte ich nun verschiedene Statusmeldungen zur Anzeige bringen. Das ist innerhalb der Controllerklasse aus auch gar kein Problem, da dort die TextArea über @FXML private TextArea meineTextArea; einfach definiert ist. Nun habe ich aber eine weitere separate Klasse "class_x.java" , welche eine Datenübertragung behandelt. Von dieser Klasse aus weiß ich jedoch nicht wie ich auf die Elemente meiner GUI zugreifen kann, d.h. wie ich von dort einen Text in meine TextArea hineinschreiben kann, da ich null Plan habe, wie ich deren Existenz in der Klasse "class_x.java" definiere. Das kann doch nicht so schwer sein??? Ich blicke hier aber keine 2cm durch... (bin natürlich zu allem Überfluss auch maximaler Java Anfänger). Kann mich jemand erleuchten?
Deiner Klasse das entsprechende GUI-Objekt übergeben, die entsprechende Methode aufrufen.
Stimmt, das funktioniert, vielen Dank! Damit kann ich momentan leben. Das kann aber evtl. etwas unübersichtlich werden, wenn ich mehrere Objekte aus unterschiedlichen Klassen habe und alle auf dieses Element zugreifen wollen. D.h. ich muss bei verschachtelten Objekten dieses immer mit "durchreichen". Und wenn das dann mal nicht nur eine TextArea ist sondern eine Vielzahl von Objekten, dann ist die Parameterliste riesig. Für mein Verständnis wäre es daher am einfachsten, wenn ich in den "externen" Klassen einfach eine Funktion hätte, welche die Referenz auf den Controller enthält bzw. herausfindet, damit ich die Methoden des Controllers von dort aus nutzen kann. Vermutlich gehe ich die Struktur eines JavaProgramms vollständig falsch an und so eine Funktion wird aus OO-Gründen bewusst verhindert? Aber wenn ich das gesamte Programm in die Controllerdatei stecke, dann ist das ja auch unübersichtlich und widerspricht der strukturierten und verteilten Modularisierung. Die Knoten werden nicht weniger...
Weiss nicht ob das hilft, ich habe schon ewig nix mehr mit JavaFX gemacht, die neuere Version noch weniger. Wenn ich mich recht erinnere ist in den Demobeispielen von JavaFX auch sowas dabei, zwar nicht explizit als solches Beispiel gekennzeichnet aber in einem davon taucht auch sowas auf, kann aber auch sein dass ich das woanders gesehen habe. Ich hatte damals das selbe Problem als ich mit JavaFX das erste mal was gemacht habe, das war aber FX 1.0 wenig später kam die nächste Version, die doch einiges anders machte. Der hier machts mit ner separaten Modellclass: https://stackoverflow.com/questions/27071068/javafx-pass-value-to-another-class-and-update-label-text https://stackoverflow.com/questions/28529482/javafx-change-label-text-from-another-class-with-controller Da gabs nochmal nen speziellen Mechanismus in neuerem JavaFX, ah da ist es EventBus: https://stackoverflow.com/questions/28529482/javafx-change-label-text-from-another-class-with-controller
https://stackoverflow.com/questions/30308065/changing-the-text-of-a-label-from-a-different-class-in-javafx https://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml Schau dir auch mal das Tut zu JavaFX an, ansonsten mal hier fragen: java-forum.org
Ist Java immer noch so Viren/Trojaner-anfällig ? Da gabs doch mal Probleme, und der Flash-Player wurde ja auch abgeschafft.
@Altenpfleger Vielen Dank für die Mühen und Links! Da steht einiges drin - vor allem auch das mit der "Controller-Übergabe". Sowas in der Richtung habe ich gesucht. Da kann ich mich nochmal ordentlich weiterbilden... Mindestens ein Knoten ist damit geplatzt!
H-G S. schrieb: > Ist Java immer noch so Viren/Trojaner-anfällig ? > > Da gabs doch mal Probleme, und der Flash-Player wurde ja auch > abgeschafft. Java Applets im Browser(!) haben nichts mit Java Applikationen auf dem Desktop zu tun. Das ist mit .Net vergleichbar, nicht mit Flash.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.