JavaFX Java FXML Vererbung in Klassen

RobGe

Mitglied
Hallo liebe Community,

ich habe die Frage in einen anderen Forum gestellt, jedoch wurde diese dort nicht beantwortet. Ich arbeite gerade an ein Programm und habe ein Klasse HauptMenuController. Darauf befindet sich ein protected Objekt meiner anderen Klasse Datenbank(Enthält nur ein paar Methoden und Strings für die MS Access). Das Objekt wird mit null initialisiert, jedoch nach dem Start sofort mit einen Konstruktor konstruiert. Ich möchte mit einer anderen Klasse auf mein bestehendes Objekt zugreifen, dabei gibt es den Begriff "super" . Leider wird immer wieder auf den neuen Controller ein leeres Objekt angezeigt, obwohl es doch von der Oberklasse erbt?

Wie kann ich darauf zugreifen? Ich denke das Problem liegt bei dem FXMLLoader irgendwo...
Java:
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

/**
 *
 * @author
 */
public class haupmenuController implements Initializable {
 
   @FXML
   private Label status;

   protected Datenbank datenbank;
 
   public void Personenerfassung() throws IOException
   {
           FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Personerfassenfx.fxml"));
           Parent root = (Parent) fxmlLoader.load();
         
           Stage stage = new Stage();
           stage.setResizable(false);
           stage.setScene(new Scene(root));
           stage.setTitle("Person erfassen");
           stage.show();
   }
 

      @Override
   public void initialize(URL url, ResourceBundle rb) {
           this.datenbank = new Datenbank("C:/kontakte.mdb");
        if (datenbank.testeVerbindung())
          {status.setStyle("-fx-text-fill: green;");
           status.setText("Verbunden");}
        else{
           status.setStyle("-fx-text-fill: red;");
           status.setText("Nicht Verbunden");}
           System.out.println(datenbank.getDatenbank());
   } 
 
   public Datenbank getDatenbank(){
       return datenbank;
   }
}
Bei der anderen Klasse möchte initialize auf die Datenabnk zugreifen, hier jedoch NULL.
Java:
public class PersonerfassenfxController extends haupmenuController implements Initializable {
public void initialize(URL url, ResourceBundle rb) {
       geschlecht.getItems().addAll("Männlich","Weiblich");
       System.out.print(super.getDatenbank());
     
   }}
 

mrBrown

Super-Moderator
Mitarbeiter
Lass Vererbung sein, das ist weder das, was du denkst, noch brauchst du es ;)


Der fxmlLoader in haupmenuController gibt dir einen Controller zurück, wenn es in der FXML passend eingetragen ist, ist dies der PersonerfassenfxController.

initialize(URL url, ResourceBundle rb) ist btw auch überflüssig - einfach initialize() reicht
 

RobGe

Mitglied
Danke. Damit ist weniger das Problem gelöst. Im Studium habe ich es ja auch so gelernt Vererbung zu nutzen. Eigentlich ist es doch richtig? Ich frage mich nur warum das Objekt leer ist und nicht vererbt wird :eek:
 

mrBrown

Super-Moderator
Mitarbeiter
Bin nur nach der Doku gegangen.
Hier wird's etwas angeschnitten: https://docs.oracle.com/javase/10/d...les/introduction_to_fxml.html#fxml_annotation


Danke. Damit ist weniger das Problem gelöst.
Das Problem des Zugriffs auf Sub-Controller löst du damit.

Im Studium habe ich es ja auch so gelernt Vererbung zu nutzen. Eigentlich ist es doch richtig? Ich frage mich nur warum das Objekt leer ist und nicht vererbt wird :eek:
Vererbung funktioniert anders als du denkst, das stellt nur eine "Ist-ein"-Beziehung zwischen den beiden Klassen her. (und das werdet ihr ganz sicher nicht so gelernt haben, sonst wechsle besser die Uni...)

In deine Fall ist PersonerfassenfxController ein haupmenuController, und hat damit auch alle Felder, die haupmenuController hat. Es gibt aber keinerlei Beziehung zwischen einem konkreten Objekt der Klasse haupmenuController und einem anderen Objekt der Klasse PersonerfassenfxController.

Analog: Alle Menschen sind Säugetiere ("Mensch extends Säugetier"), trotzdem hast du nicht den Stein in der Hand, den irgendeine Schimpanse in Afrika grad in der Hand hat ;)
 

Flown

Administrator
Mitarbeiter
Aber zurück zum Thema. Schlau wäre es einen DatenbankService zu kreieren, der dir dann das passende Objekt liefert und nur einmal initialisiert wird und in jedem Controller neu geholt wird.
 

dzim

Top Contributor
Ich weiss nicht, ob Vererbung unbedingt benötigst, es ist ja eher eine Dependency Injection.
Du erweiterst zwar die Hauptklasse, dadurch wird aber eben nicht automatisch dessen #initilaize-Methode aufgerufen. Das ginge nur, wenn du in der überschriebenen #initialize Methode von "PersonerfassenfxController" ein super.initialize(url, rb); an den Beginn anfügst.

Das Problem, das ich aber mit deinem Code im Moment habe, ist aber eher ein anderes: dein Konstruktor erzeugt immer ein neues Fenster (Stage), ohne Kenntniss des vorherigen Fensters. Am Ende wird du also einen Wald an Fenstern haben, die kaum etwas miteinander zu tun haben.

Ich würde an deiner Stelle den Vorschlägen von @Flown und @mrBrown befolgen.
 

RobGe

Mitglied
mrBrown hat gesagt.:
Analog: Alle Menschen sind Säugetiere ("Mensch extends Säugetier"), trotzdem hast du nicht den Stein in der Hand, den irgendeine Schimpanse in Afrika grad in der Hand hat ;)

Genau so habe ich das auf dem Schirm. Habe mich darüber auch nochmal informiert. An sich wollte ich das Objekt nicht neu anlegen. Vielleicht auch über eine Referenz übergeben. Das initialize habe ich eigentlich gar nicht groß auf dem Schirm, danke für den Link. Netbeans macht das immer automatisch. Danke euch :)!


Werde nochmal Vererbung durchlesen :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX FXML vs. Java Code AWT, Swing, JavaFX & SWT 3
S JavaFX FXML-Editor mit Java 7? AWT, Swing, JavaFX & SWT 2
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
dzim UI aus FXML und Java gemischt - NPE? AWT, Swing, JavaFX & SWT 4
Juelin Für Java-Spezialisten AWT, Swing, JavaFX & SWT 4
Juelin Java <-> Delphi AWT, Swing, JavaFX & SWT 3
H Exceptions seit java: 1.6.0_65 Umstellung AWT, Swing, JavaFX & SWT 3
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
W Kennt jemand Dear ImGui (und den Java-Wrapper dazu)? AWT, Swing, JavaFX & SWT 0
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
D JAVA Schieberegler AWT, Swing, JavaFX & SWT 6
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
Encera Java FX im Eclipse-Marketplace nichtmehr auffindbar AWT, Swing, JavaFX & SWT 6
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
Heldderschatten Java Events und Interfaces AWT, Swing, JavaFX & SWT 18
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
U was bewirkt die methode fill und unterschied zu anderen fill Methoden in 2dgraphics? (Java)? AWT, Swing, JavaFX & SWT 6
DonBronson Java Graphics bewegbar machen (Drag&Drop) AWT, Swing, JavaFX & SWT 3
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
E Java-TexturePaint sehr langsam AWT, Swing, JavaFX & SWT 9
N Java MySQL Datenbank durchsuchen? AWT, Swing, JavaFX & SWT 7
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
Splayfer Custom Font in AttributedString Java AWT, Swing, JavaFX & SWT 4
imawake Java Paket-Tracking Programm 📦 AWT, Swing, JavaFX & SWT 7
izoards *.doc Seitenränder per Java setzen... AWT, Swing, JavaFX & SWT 14
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
N Java Mouse Listiner macht alles zusammen AWT, Swing, JavaFX & SWT 4
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
J Spiel mit Java AWT, Swing, JavaFX & SWT 9
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
izoards Java FX Window Event SHOWING AWT, Swing, JavaFX & SWT 17
N FXMLLoader.load java.lang.RuntimeException: Gradle AWT, Swing, JavaFX & SWT 2
T Java GUI - Würfel Programm AWT, Swing, JavaFX & SWT 6
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
dtr84 JavaFX/OpenJFX mittels Apache Ivy einbinden (Java 11) AWT, Swing, JavaFX & SWT 18
M Jogl und Java 3d AWT, Swing, JavaFX & SWT 0
S0PEX JavaFX Java 8 auf 15 migrieren OpenJFX mit Gradle eingebunden, jedoch nicht gefunden !? AWT, Swing, JavaFX & SWT 4
I Gui in bestehendes Java-Programm AWT, Swing, JavaFX & SWT 11
V Java-Zeichenfeld mit AWT AWT, Swing, JavaFX & SWT 3
N java Gui friert scheinbar zufällig ein AWT, Swing, JavaFX & SWT 5
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
P Java Fx einrichten AWT, Swing, JavaFX & SWT 2
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
MiMa Java und JavaFX 13 läuft endlich AWT, Swing, JavaFX & SWT 4
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Trèfle Ausklappbare Diagramme in Java AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
K JAVA FX Constraints AWT, Swing, JavaFX & SWT 2
F Java FX und webcam AWT, Swing, JavaFX & SWT 1
T Wie kann man in java aufwendige grafiken programmieren AWT, Swing, JavaFX & SWT 1
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
J Java SWT Tabelleninhalt formattieren AWT, Swing, JavaFX & SWT 10
Blender3D Falsche Werte mit Java Toolkit Screensize AWT, Swing, JavaFX & SWT 4
K Swing AWT-EventQueue-1 java.lang.NoClassDefFoundError bei setVisible(true) AWT, Swing, JavaFX & SWT 3
A Java Programm gestalten AWT, Swing, JavaFX & SWT 4
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
I Java Bildfarbe ändern wie bei Photoshop AWT, Swing, JavaFX & SWT 9
T Java: Zwei abhängige JSlider machen nicht das, was sie sollen AWT, Swing, JavaFX & SWT 4
J Parallele Aktionen in Java FX richtig durchführen. AWT, Swing, JavaFX & SWT 5
Neumi5694 java.awt.Window nach javafx.stage.Window AWT, Swing, JavaFX & SWT 1
M JavaFX java.lang.IllegalStateException: Location is not set. AWT, Swing, JavaFX & SWT 9
L Java- CardLayout AWT, Swing, JavaFX & SWT 10
M Java zeichnet nicht pixelgenau AWT, Swing, JavaFX & SWT 40
B Swing Eclipse is running under 0, but this Java project has a 1.6 Java compliance level, so WindowBuilder AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
S Java Gui AWT, Swing, JavaFX & SWT 5
R Sierpinski Dreieck mit Java FX AWT, Swing, JavaFX & SWT 4
Flynn java.lang.UnsupportedOperationException: Not supported yet AWT, Swing, JavaFX & SWT 7
D Zwei getrennte Java Klassen verbinden. Wie ? AWT, Swing, JavaFX & SWT 2
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
N Aktualisierung des Fensters AWT Java ohne Ruckeln AWT, Swing, JavaFX & SWT 3
MiMa Java, Maven Projekte nach JavaFX? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben