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

Warum funktioniert meine JavaFX-Controller-Klasse nicht?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 01:36:29712Durchsuche

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>

ImportController.java

<code class="java">...
private WebImporter importer;
...</code>

WebImporter.java

<code class="java">...
private final TextArea textArea;
...</code>

TextLoggingSample.java ( Einstiegspunkt)

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

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!

Stellungnahme:
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