Forum: PC-Programmierung JavaFX - Klassenübergreifender Zugriff


von KnotenImHirn (Gast)


Lesenswert?

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?

von Altenpfleger (Gast)


Lesenswert?

Deiner Klasse das entsprechende GUI-Objekt übergeben, die entsprechende 
Methode aufrufen.

von KnotenImHirn (Gast)


Lesenswert?

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...

von Altenpfleger (Gast)


Lesenswert?

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

von Altenpfleger (Gast)


Lesenswert?


von H-G S. (haenschen)


Lesenswert?

Ist Java immer noch so Viren/Trojaner-anfällig ?

Da gabs doch mal Probleme, und der Flash-Player wurde ja auch 
abgeschafft.

von KnotenImHirn (Gast)


Lesenswert?

@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!

von Pinker Waschbär (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.