Heim > Java > javaLernprogramm > Warum funktioniert meine JavaFX-Controller-Klasse nicht?

Warum funktioniert meine JavaFX-Controller-Klasse nicht?

Patricia Arquette
Freigeben: 2024-11-03 01:36:29
Original
764 Leute haben es durchsucht

Why is my JavaFX Controller Class not working?

JavaFX-Controller-Klasse funktioniert nicht

Der bereitgestellte Code stellt eine Schnittstelle zu einer TextArea als Protokoll dar. Das Ziel besteht darin, den TextArea-Inhalt bei Bedarf aus einer separaten Klasse zu aktualisieren. Dies erfordert die Erstellung einer Controller-Klasse, die Initializable erweitert. Die Controller-Implementierung funktioniert jedoch nicht ordnungsgemäß.

Lösung

Der Code weist ein grundlegendes Problem auf: Die Anwendungsklasse wird als Controller verwendet. Von dieser Vorgehensweise wird abgeraten, weil:

  • Es sollte nur eine Anwendungsinstanz vorhanden sein, der Loader jedoch häufig mehrere Instanzen erstellt.
  • Das Verweisen auf Controller-Mitgliedsobjekte kann verwirrend sein, da sie sich in ihren unterscheiden Feldverfügbarkeit zwischen der gestarteten Anwendung und der vom Loader erstellten Anwendungsinstanz.

Darüber hinaus wird empfohlen, die Grundfunktionen der Benutzeroberfläche abzuschließen, bevor Multithreading implementiert wird.

Überarbeiteter Code

Hier ist der korrigierte Code mit separaten Klassen für den Controller, den Web-Importer und das Textprotokollierungsbeispiel:

Root.fxml

<code class="xml">...
fx:controller="textlogger.ImportController"
...</code>
Nach dem Login kopieren

ImportController.java

<code class="java">...
private WebImporter importer;
...</code>
Nach dem Login kopieren

WebImporter.java

<code class="java">...
private final TextArea textArea;
...</code>
Nach dem Login kopieren

TextLoggingSample.java ( Einstiegspunkt)

<code class="java">...
Parent root = loader.load(
    getClass().getResourceAsStream(
            "Root.fxml"
    )
);
...</code>
Nach dem Login kopieren

Fazit

Durch die Trennung der Controller-Klasse und die Verwendung des richtigen Ansatzes für Multithreading kann die Anwendung nun erfolgreich die TextArea von a aktualisieren separate Klasse.

Das obige ist der detaillierte Inhalt vonWarum funktioniert meine JavaFX-Controller-Klasse nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage