JavaFX fxml datein mit menübar ändern

stefan.v

Mitglied
Hallo,
Ich habe eine JavaFX programm mit einer menueBar mit meheren MenueItem. Jetzt wollte ich wenn man ein Item anklickt eine neue fxml datei ins Fenster ladet.
Mit einem Butten schaffe ich es die fxml datein zu wächseln. Wenn ich jedoch eine menueBar nehme bekomme ich eine.
java.lang.reflect.InvocationTargetException​
Meine FXML datei schaut so aus:
Code:
[INDENT]<?xml version="1.0" encoding="UTF-8"?>
<?importjavafx.scene.layout.BorderPane?>
<?importjavafx.scene.control.Button?>
<?importjavafx.scene.control.MenuBar?>
<?importjavafx.scene.control.Menu?>
<?importjavafx.scene.control.MenuItem?>
<BorderPane fx:id="BorderPane" prefHeight="200.0" prefWidth="400.0" xmlns:fx="http://javafx.com/fxml/1"
            xmlns="http://javafx.com/javafx/2.2" fx:controller="sample.Controller">
    <top>
        <MenuBar fx:id="menuBar" BorderPane.alignment="CENTER">
            <menus>
                <Menu mnemonicParsing="false" text="Datei">
                    <items>
                        <MenuItem mnemonicParsing="false" text="Option 1" />
                    </items>
                </Menu>
                <Menu mnemonicParsing="false" text="Bearbeiten">
                    <items>
                        <MenuItem mnemonicParsing="false" onAction="#CreateContact" text="Kontakt erstellen" />
                    </items>
                </Menu>
            </menus>
        </MenuBar>
    </top>
</BorderPane>[/INDENT]
und mein controller schaut so aus:
Code:
[INDENT]p
ackage sample;

        import java.io.IOException;
        import javafx.application.Platform;
        import javafx.embed.swing.JFXPanel;
        import javafx.event.ActionEvent;
        import javafx.fxml.FXML;
        import javafx.fxml.FXMLLoader;
        import javafx.scene.Node;
        import javafx.scene.Parent;
        import javafx.scene.Scene;
        import javafx.scene.control.Button;
        import javafx.scene.control.MenuBar;
        import javafx.scene.layout.AnchorPane;
        import javafx.scene.layout.BorderPane;
        import javafx.stage.Stage;

public class Controller {
    private Node node;
    private Stage stage;
    private Scene scene;
    private FXMLLoader fxmlLoader;
    private Parent root;
    private BorderPane borderpane;
    private MenuBar menuBar2;

    @FXML AnchorPane mainAnchorPane;
    @FXML MenuBar menuBar;
@FXML private void CreateContact(ActionEvent actionEvent) throws[/INDENT]
IOException {
        stage = (Stage) menuBar.getScene().getWindow();
        scene = stage.getScene();
        fxmlLoader = new FXMLLoader(getClass().getResource("contact_manager2.fxml"));
        root = (Parent) fxmlLoader.load();
        scene.setRoot(root);
    }
}[/INDENT]
Ich habe schon verschiedenste Lösungen probiert. Jedoch bekomme ich immer diese Fehlermeldung.
Ich wäre eurer Hilfe sehr dankbar.
LG Stefan​
 

dzim

Top Contributor
Aua! Meine Augen schmerzen!
Verrate bloß niemanden, dass das Deutsch gewesen sein soll!

Ich korrigiere das mal:
Hallo,
Ich habe ein JavaFX-Programm mit einer MenuBar mit mehreren MenuItems. Jetzt wollte ich, dass wenn man ein Item anklickt, eine neue FXML-Datei ins Fenster geladen wird.
Mit einem Butten schaffe ich es, die FXML-Datein zu wechseln (Anm.: was soll das sein? Was wechselt hier? Ich denke mal, du meinst die Oberfläche...). Wenn ich jedoch eine MenuBar verwende (Anm.: Du meinst sicher "Wenn ich auf ein Item klicke", oder?), dann bekomme ich eine java.lang.reflect.InvocationTargetException
Meine FXML-Datei sieht so aus:
<FXML-Code>
und mein Controller sieht so aus:
<Java-Code>
Ich habe schon verschiedenste Lösungen probiert (Anm.: Welche!?). Jedoch bekomme ich immer diese Fehlermeldung.
Für eure Hilfe wäre ich euch sehr dankbar.
LG Stefan

Zu deinem Problem: Ohne den Code bei mir zu Bauen und zu Starten, vermute ich, dass der darin begründet liegt, dass du den Root der Scene austauschen möchtest. Dabei wäre es sinnvoller, den geladenen Inhalt der contact_manager2.fxml als den CENTER Node des BorderPanes zu setzen.
Was mich gerade noch wundert:
In deiner Menü-FXML steht fx:id="BorderPane", aber im Controller gibt es keine entsprechende Repräsentation z.B.:
@FXML private BorderPane BorderPane; // Gross-/Kleinscreibung bei Variablen beachten

Stattdessen nur
private BorderPane borderPane; // korrekte Schreibweise, aber kein @FXML

Es wäre generell auch hilfreich, wenn du den vollen StackTrace - nicht nur die Exception - posten würdest.

Grüsse,
Daniel
 

stefan.v

Mitglied
Ja, ich meine das Item, ich habe das was Sie gesagt haben schon mal geändert. Aber ich bekomme noch immer das:
Code:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
   at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
   at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
   at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
   at javafx.event.Event.fireEvent(Event.java:198)
   at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
   at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
   at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358)
   at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
   at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
   at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
   at javafx.event.Event.fireEvent(Event.java:198)
   at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
   at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
   at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
   at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
   at java.security.AccessController.doPrivileged(Native Method)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:388)
   at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
   at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
   at com.sun.glass.ui.View.notifyMouse(View.java:937)
   at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
   at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
   at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
   at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
   ... 43 more
Caused by: java.lang.NullPointerException
   at sample.Controller.CreateContact(Controller.java:84)
   ... 53 more
 

dzim

Top Contributor
Dann mal bitte in der Klasse Controller und der Methode CreateContact (Anmerkung: Methodennamen beginnen immer mit kleinen Buchstaben.), konkret in der Zeile 84, dafür sorgen, dass nicht auf ein nicht-initialisiertes Feld zugegriffen wird.

Code:
Caused by: java.lang.NullPointerException
   at sample.Controller.CreateContact(Controller.java:84)

Was steht in dieser Zeile für Code?
 

stefan.v

Mitglied
Du hast recht ich habe den falschen variabeln Namen gennommen.
Jetzt geht es, danke dafür.
Für die es interresiert, im controller schaut es jetzt so aus
Code:
@FXML private MenuBar MB;
@FXML protected void showcontact() throws IOException {
    stage = (Stage) MB.getScene().getWindow();
    scene = stage.getScene();
    fxmlLoader = new FXMLLoader(getClass().getResource("contact_manager2.fxml"));
    root = (Parent) fxmlLoader.load();
    scene.setRoot(root);
}
 

stefan.v

Mitglied
Ich habe noch ein kleines problem und zwar habe ich eine list. Wo dann einträge eingetragen wärden dazu habe ich die Zeilen code im controller.
Code:
final ObservableList<String> contactlistmodel = FXCollections.observableArrayList();
@FXML private ListView LVcontactlist;
LVcontactlist.setItems(contactlistmodel);
Laut der Exception schreit er dann bei der letzten Zeile.
Hat jemand ideen, was es sein könnte?
 

dzim

Top Contributor
Das Problem ist, dass deine Code-Qualität/-Kenntniss ungefähr der deines geschriebenen Deutsch entspricht.
Das heißt "werden": da ist kein ä drin!
Problem, Einträge, Liste, Code, Controller: alles Substantive, somit alle groß schreiben!
"variabeln Namen" -> Variablennamen...
Aua aua aua...

Dein Problem im Code, der letzten Zeile, ist, dass du nicht außerhalb einer Methode eine Wertzuweisung machen kannst, es sein denn, du nutzt einen "static {...}"-Block. Aber diese Zuweisung sollte in deiner inintialize-Methode gemacht werden.
 

Kababär

Top Contributor
Das Problem ist, dass deine Code-Qualität/-Kenntniss ungefähr der deines geschriebenen Deutsch entspricht.
Das heißt "werden": da ist kein ä drin!
Problem, Einträge, Liste, Code, Controller: alles Substantive, somit alle groß schreiben!
"variabeln Namen" -> Variablennamen...
Aua aua aua...

Also man kann auch etwas übertreiben... das hier ist ein Java-Forum und kein Deutsch-Nachhilfe-Forum.

Ansonsten danke für die Hilfe.
 

dzim

Top Contributor
Mag sein und eine gewisse Menge an Fehlern ignoriere ich auch - aber bei "wärden" wird mir übel. Sei's drum.
Am Ende hoffe ich dennoch nur, dass @stefan.v sein Problem mit seinem Programm in den Griff bekommt.
 

stefan.v

Mitglied
@dzim Es tut mir leid, dass Ihnen meine Fehler stören.
Ich habe den Code jetzt in die inintialize-Methode gegeben.
Code:
private ObservableList<String> contactlistmodel = FXCollections.observableArrayList();
@FXML private ListView LVcontactlist;
ContactManager cm=new ContactManager();
@FXML private void initialize() {
    for(Object element : cm.getContactList()) 
// ich habe eine liste in der Klasse ContactManager in der alle Kontakte gespeichert sind.
    {
        contactlistmodel.add(element.toString());
    }
    LVcontactlist.setItems(contactlistmodel);
}
Das funktioniert jetzt auch.
Jedoch jetzt funktioniert das wechseln der oberfläche(was wir oben gemacht haben) nicht mehr.
Er sagt:
Code:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
   at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
   at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
   at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
   at javafx.event.Event.fireEvent(Event.java:198)
   at javafx.scene.control.MenuItem.fire(MenuItem.java:462)
   at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)
   at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$343(ContextMenuContent.java:1358)
   at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
   at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
   at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
   at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
   at javafx.event.Event.fireEvent(Event.java:198)
   at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)
   at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)
   at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)
   at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:352)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)
   at java.security.AccessController.doPrivileged(Native Method)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:388)
   at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
   at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:387)
   at com.sun.glass.ui.View.handleMouseEvent(View.java:555)
   at com.sun.glass.ui.View.notifyMouse(View.java:937)
   at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
   at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
   at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
   at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
   ... 43 more
Caused by: javafx.fxml.LoadException:
/C:/Users/Stefan%20V/Desktop/ContactManager_JavaFX/out/production/ContactManager_JavaFX/sample/contact_manager2.fxml

   at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2571)
   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
   at sample.Controller.editcontact(Controller.java:63)
   ... 53 more
Caused by: java.lang.reflect.InvocationTargetException
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:497)
   at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
   at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2566)
   ... 56 more
Caused by: java.lang.NullPointerException
   at sample.Controller.initialize(Controller.java:37)
   ... 66 more
Kann das Problem villeicht sein, dass ich von beiden fxml datein den selben controller verwende? Bei bedarf kann ich auch meinen ganzen code schicken.
 

dzim

Top Contributor
Bei StackTraces ist in der Regel immer der allerletzte "Caused by"-Block interessant. Deiner sagt hier, dass du eine nicht-initialisierte Variable in Zeil 37 deiner Klasse sample.Controller in der #initialize-Methode.
Überprüfe mal, was da verwendet wird, was noch "null" sein kann. Ok?
 

stefan.v

Mitglied
Bei mir steht in dieser zeile:
Code:
LVcontactlist.setItems(contactlistmodel);
Ich habe davor
Code:
@FXML private ListView LVcontactlist;
und in der fXML Datei:
Code:
<ListView fx:id="LVcontactlist" onMouseClicked="#choseelement" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
Also dürfte das doch passen?
 

dzim

Top Contributor
Ja, sieht eigentlich ok aus. Aber der Meldung nach, ist LVcontactlist eben "null". Hast du den Controller von Hand angelegt? Ich frage, weil ich vermute, dass hier etwas beim initialisieren noch falsch läuft.

Also: Kannst du bitte den Code-Schnipsel posten, der dir die GUI mit der Liste erstellt (also dort, wo das Laden der FXML-Datei stattfindet)?
 

stefan.v

Mitglied
Controller:
Code:
package sample;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.control.MenuBar;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
import java.io.IOException;
public class Controller {
    private ObservableList<String> contactlistmodel = FXCollections.observableArrayList("e");
    @FXML private MenuBar MB;
    @FXML private Stage stage;
    @FXML private Scene scene;
    @FXML private Parent root;
    @FXML private FXMLLoader fxmlLoader;
    @FXML private TextField TFforename;
    @FXML private TextField TFsurname;
    @FXML private TextField TFaddress;
    @FXML private TextField TFolder;
    @FXML private ListView LVcontactlist;
    @FXML private void initialize() {
        LVcontactlist.setItems(contactlistmodel);
    }
    @FXML protected void saveandend() throws IOException {
        
        Platform.exit();
    }
    @FXML protected void endwithout() throws IOException {
        Platform.exit();
    }
    @FXML protected void exportcontact() throws IOException {
       
    }
    @FXML protected void importcontact() throws IOException {
        
    }
    @FXML protected void showcontact() throws IOException {
        stage = (Stage) MB.getScene().getWindow();
        scene = stage.getScene();
        fxmlLoader = new FXMLLoader(getClass().getResource("contact_manager1.fxml"));
        root = (Parent) fxmlLoader.load();
        scene.setRoot(root);
    }
    @FXML protected void editcontact() throws IOException {
        stage = (Stage) MB.getScene().getWindow();
        scene = stage.getScene();
        fxmlLoader = new FXMLLoader(getClass().getResource("contact_manager2.fxml"));
        root = (Parent) fxmlLoader.load();
        scene.setRoot(root);
    }
    @FXML protected void savecontact() throws IOException {
    
    }
    @FXML protected void changecontact() throws IOException {

    }
    @FXML protected void deletecontact() throws IOException {
        contactlistmodel.remove(LVcontactlist.getSelectionModel().getSelectedIndex());
    }
    @FXML protected void choseelement(){

    }
}
contact_manager1:
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?importjavafx.scene.control.Button?>
<?importjavafx.scene.control.ListView?>
<?importjavafx.scene.control.Menu?>
<?importjavafx.scene.control.MenuBar?>
<?importjavafx.scene.control.MenuItem?>
<?importjavafx.scene.layout.BorderPane?>
<?importjavafx.scene.layout.ColumnConstraints?>
<?importjavafx.scene.layout.GridPane?>
<?importjavafx.scene.layout.RowConstraints?>
<?importjavafx.scene.layout.VBox?>

<GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8.0.66" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <columnConstraints>
      <ColumnConstraints />
   </columnConstraints>
   <rowConstraints>
      <RowConstraints />
   </rowConstraints>
   <children>
      <BorderPane prefHeight="500.0" prefWidth="600.0">
         <top>
            <MenuBar fx:id="MB" BorderPane.alignment="CENTER">
                <menus>
                    <Menu mnemonicParsing="false" text="Datei">
                        <items>
                            <MenuItem mnemonicParsing="false" onAction="#saveandend" styleClass="menueitem" text="Beenden mit speichern" />
                            <MenuItem mnemonicParsing="false" onAction="#endwithout" styleClass="menueitem" text="Beenden ohne speichern" />
                            <MenuItem mnemonicParsing="false" onAction="#exportcontact" styleClass="menueitem" text="Kontakte exportieren" />
                            <MenuItem mnemonicParsing="false" onAction="#importcontact" styleClass="menueitem" text="Kontakte importieren" />
                        </items>
                    </Menu>
                    <Menu mnemonicParsing="false" text="Bearbeiten">
                        <items>
                            <MenuItem mnemonicParsing="false" onAction="#showcontact" styleClass="menueitem" text="Kontakte anzeigen" />
                            <MenuItem mnemonicParsing="false" onAction="#editcontact" styleClass="menueitem" text="neuen Kontakt erstellen" />
                        </items>
                    </Menu>
                </menus>
            </MenuBar>
         </top>
         <center>
            <ListView fx:id="LVcontactlist" onMouseClicked="#choseelement" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
         </center>
         <right>
            <VBox prefHeight="200.0" prefWidth="100.0" styleClass="toolbar" BorderPane.alignment="CENTER">
               <children>
                  <Button mnemonicParsing="false" onMouseClicked="#changecontact" styleClass="toolbarbutten" text="Ändern" />
                  <Button mnemonicParsing="false" onMouseClicked="#deletecontact" styleClass="toolbarbutten" text="Löschen" />
               </children></VBox>
         </right>
    
      </BorderPane>
   </children>
</GridPane>
contact_manager2:
Code:
<?xml version="1.0" encoding="UTF-8"?>

<?importjavafx.geometry.Insets?>
<?importjavafx.scene.control.Button?>
<?importjavafx.scene.control.Label?>
<?importjavafx.scene.control.Menu?>
<?importjavafx.scene.control.MenuBar?>
<?importjavafx.scene.control.MenuItem?>
<?importjavafx.scene.control.TextField?>
<?importjavafx.scene.layout.BorderPane?>
<?importjavafx.scene.layout.ColumnConstraints?>
<?importjavafx.scene.layout.GridPane?>
<?importjavafx.scene.layout.HBox?>
<?importjavafx.scene.layout.RowConstraints?>
<?importjavafx.scene.layout.VBox?>

<GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8.0.66" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
    <columnConstraints>
        <ColumnConstraints />
    </columnConstraints>
    <rowConstraints>
        <RowConstraints />
    </rowConstraints>
    <children>
        <BorderPane prefHeight="500.0" prefWidth="600.0">
            <top>
                <MenuBar fx:id="MB" BorderPane.alignment="CENTER">
                    <menus>
                        <Menu mnemonicParsing="false" text="Datei">
                            <items>
                                <MenuItem mnemonicParsing="false" onAction="#saveandend" styleClass="menueitem" text="Beenden mit speichern" />
                                <MenuItem mnemonicParsing="false" onAction="#endwithout" styleClass="menueitem" text="Beenden ohne speichern" />
                                <MenuItem mnemonicParsing="false" onAction="#exportcontact" styleClass="menueitem" text="Kontakte exportieren" />
                                <MenuItem mnemonicParsing="false" onAction="#importcontact" styleClass="menueitem" text="Kontakte importieren" />
                            </items>
                        </Menu>
                        <Menu mnemonicParsing="false" text="Bearbeiten">
                            <items>
                                <MenuItem mnemonicParsing="false" onAction="#showcontact" styleClass="menueitem" text="Kontakte anzeigen" />
                                <MenuItem mnemonicParsing="false" onAction="#editcontact" styleClass="menueitem" text="neuen Kontakt erstellen" />
                            </items>
                        </Menu>
                    </menus>
                </MenuBar>
            </top>
         <center>
            <VBox prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER">
               <children>
                  <HBox prefHeight="50.0" prefWidth="200.0">
                     <children>
                        <Label prefWidth="80.0" styleClass="textlabel" text="Vorname: " />
                        <TextField fx:id="TFforename" prefWidth="200.0" />
                     </children>
                     <padding>
                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </padding>
                  </HBox>
                  <HBox prefHeight="50.0" prefWidth="200.0">
                     <children>
                        <Label prefWidth="80.0" styleClass="textlabel" text="Nachname:" />
                        <TextField fx:id="TFsurname" prefWidth="200.0" />
                     </children>
                     <padding>
                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </padding></HBox>
                  <HBox prefHeight="50.0" prefWidth="200.0">
                     <children>
                        <Label prefWidth="80.0" styleClass="textlabel" text="Adresse:" />
                        <TextField fx:id="TFaddress" prefWidth="200.0" />
                     </children>
                     <padding>
                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </padding></HBox>
                  <HBox prefHeight="50.0" prefWidth="200.0">
                     <children>
                        <Label prefWidth="80.0" styleClass="textlabel" text="Alter:" />
                        <TextField prefWidth="200.0" />
                     </children>
                     <padding>
                        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </padding></HBox>
                  <HBox prefHeight="100.0" prefWidth="200.0">
                     <children>
                        <Button mnemonicParsing="false" onMouseClicked="#savecontact" text="Speichern">
                           <HBox.margin>
                              <Insets bottom="10.0" left="90.0" right="10.0" top="10.0" />
                           </HBox.margin></Button>
                     </children></HBox>
               </children>
            </VBox>
         </center>
         <right>
            <VBox prefHeight="200.0" prefWidth="100.0" styleClass="toolbar" BorderPane.alignment="CENTER" />
         </right>
        </BorderPane>
    </children>
</GridPane>
 

dzim

Top Contributor
Ja ich denke das Problem ist recht einfach ein Missverständniss über die Funktionsweise der Controller:
Du setzt in deinen Methoden den root der Scene neu. Bei jedem Aufruf des FXMLLoaders wird eine neue Instanz der Klasse "sample.Controller" angelegt - die bisher verwendete (die das Update der Scene ausgelöst hat) hat keinen Zugriff auf die Liste, da diese Bestandteil der Controller-Instanz des anderen FXMLs ist.
Ich weiss nicht, ob ich mich heute Abend dazu noch motivieren kann, aber sonst würde ich dir mal eine rudimentäre Anwendung (in Form von Code-Beispielen) zusammenschrauben, die den Wechsel der UI-Komponenten vielleicht etwas klarer macht...
 

dzim

Top Contributor
So. Hier ein sehr einfaches Beispiel, wie man so eine Applikation beginnen *kann*.

Main-Klasse - genau eine Instanz einer von javafx.application.Application erbenden Klasse:
Java:
package eu.dzim.tests.fx;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class MainExample extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        stage.setTitle("Application Window");
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/Root.fxml"));
        Parent root = loader.load();
        Scene scene = new Scene(root, 640, 480);
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}
Root.fxml sieht wie folgt aus:
HTML:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane xmlns:fx="http://javafx.com/fxml" fx:id="root" fx:controller="eu.dzim.tests.fx.RootController">
    <top>
        <MenuBar>
            <Menu text="File">
                <MenuItem text="Exit" onAction="#exitApplication"/>
            </Menu>
            <Menu text="Views">
                <MenuItem text="View1" onAction="#showView1"/>
                <MenuItem text="View2" onAction="#showView2"/>
            </Menu>
        </MenuBar>
    </top>
</BorderPane>
Der dazugehörige Controller eu.dzim.tests.fx.RootController, der durch den FXMLLoader in der Main-Klasse genau einmal erstellt wird, sieht so aus:
Java:
package eu.dzim.tests.fx;

import java.io.IOException;
import java.util.Optional;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;

public class RootController {
   
    @FXML private BorderPane root;
   
    public RootController() {}
   
    @FXML
    public void initialize() {
        // if we need something to do, e.g. translations (i18n/l10n)
        showView1();
    }
   
    @FXML
    public void exitApplication(ActionEvent event) {
        // orderly shutdown the JavaFX application this view belongs to
        Platform.exit();
    }
   
    @FXML
    public void showView1() {
        // verbose example
        Optional<Pane> optContent = loadCenterContent("View1");
        if (optContent.isPresent())
            root.setCenter(optContent.get());
       
        // Java 8 schortcut with Lambda-Expression
        // loadCenterContent("View1").ifPresent(pane -> root.setCenter(pane));
    }
   
    @FXML
    public void showView2() {
        loadCenterContent("View2").ifPresent(pane -> root.setCenter(pane));
    }
   
    private Optional<Pane> loadCenterContent(String fxmlFilename) {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/" + fxmlFilename + ".fxml"));
        Pane pane = null;
        try {
            pane = loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Optional.ofNullable(pane);
    }
}

Die Views View1.fxml und View2.fxml folgen gleich, nur eine Bemerkung: Der Einfachheit halber habe ich auf spezifische Controller verzichtet, aber hier beginnt jetzt die Arbeit. Wenn du ein gemeinsames Modell möchtest, musst du mit anderen Methoden dafür sorgen, dass sie auf diese Zugreifen können. Vielleicht mach ich da später mal ein Beispiel.
Hier erst einmal die beiden FXMLs in der Reihenfolge 1 und 2:
HTML:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.VBox?>

<VBox xmlns:fx="http://javafx.com/fxml" spacing="10">
    <Label text="Name"/>
    <TextField promptText="enter Name here..."/>
    <Label text="Bla"/>
    <TextField promptText="enter Bla here..."/>
    <Label text="Blub"/>
    <TextField promptText="enter Blub here..."/>
    <padding>
        <Insets top="10" right="10" bottom="10" left="10"/>
    </padding>
</VBox>
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Do not edit this file it is generated by e(fx)clipse from ../src/main/resources/fxml/View2.fxgraph
-->

<?import java.lang.*?>
<?import javafx.collections.FXCollections?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.layout.VBox?>

<VBox xmlns:fx="http://javafx.com/fxml" spacing="10">

    <ListView>
        <items>
            <FXCollections fx:factory="observableArrayList">
                <String fx:value="simple String list entry 1"/>
                <String fx:value="simple String list entry 2"/>
                <String fx:value="simple String list entry 3"/>
                <String fx:value="simple String list entry 4"/>
                <String fx:value="simple String list entry 5"/>
                <String fx:value="..."/>
            </FXCollections>
        </items>
    </ListView>
    <padding>
        <Insets top="10" right="10" bottom="10" left="10"/>
    </padding>
</VBox>

Das wäre jetzt das Grundgerüst. Du siehst: Ich tausche nicht die Scene aus, sondern nur Teile des BorderPanes, das als Root der Scene fungiert. Das macht es deutlich einfacher. Getreu dem Motto der Softwareentwicklung "Devide & Conquer" kannst du nun das grosse Ganze (die Applikation) in kleine, überschaubare Teile zerlegen (hier View1 und View2). Aber auch diese können wieder aus weiteren "Bausteinen" bestehen.

Ich hoffe das trägt dir etwas zum Verständnis bei.
 

dzim

Top Contributor
Nachtrag:
View1 und View2 bekommen jeweils einen eigenen Controller:
HTML:
<VBox xmlns:fx="http://javafx.com/fxml" fx:controller="eu.dzim.tests.fx.View1Controller" spacing="10">

Also jeweils eu.dzim.tests.fx.View1Controller und eu.dzim.tests.fx.View2Controller.
Bevor ich diese zeige, hier noch ein paar notwendige Erweiterungen:

Idealerweise gibt es so etwas wie ein zentrales Modell, in dem Daten aus den Input-Feldern oder der Listen-Inhalt vorgehalten werden.

Hier das Modell:
Java:
package eu.dzim.tests.fx;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

public class ExampleModel {
    private StringProperty name = new SimpleStringProperty(this, "name", "");
    public ExampleModel() {}
    public final StringProperty nameProperty() {
        return this.name;
    }
    public final String getName() {
        return this.nameProperty().get();
    }
    public final void setName(final String name) {
        this.nameProperty().set(name);
    }
}

Damit wir es in die Controller bekommen, müssen wir irgendeine Art von "Dependency Injection" verwenden. Ich zeige hier die einfachste Variante. Über ein Interface.
Java:
package eu.dzim.tests.fx;

public interface ExampleInterface {
    void setModel(ExampleModel model);
}

Meine Controller sehen also wie folgt aus:
Java:
package eu.dzim.tests.fx;

import javafx.fxml.FXML;

public class View1Controller implements ExampleInterface {

    private ExampleModel model;

    public View1Controller() {
        // explicit zero-argument constructor for class instantiation
    }

    @Override
    public void setModel(ExampleModel model) {
        this.model = model;
    }

    @FXML
    protected void initialize() {
        // do something (e.g. with the model)
        // executed *after* the model is set
        System.err.println(toString() + ": model -> " + model);
    }
}
(Beide Controller unterscheiden sich wirklich nur in ihrem Klassennamen! Also View1Controller und View2Controller.)

Beim hin- und herschalten zwischen den Views sieht man auf der Konsole folgendes
Code:
eu.dzim.tests.fx.View1Controller@702016d9: model -> eu.dzim.tests.fx.ExampleModel@2b9eec63
eu.dzim.tests.fx.View2Controller@29438fef: model -> eu.dzim.tests.fx.ExampleModel@2b9eec63
(Der Teil hinter dem ersten @-Symbol ändert sich, da hier jedesmal neue Instanzen des Controllers erzeugt werden - man könnte hier optimieren, indem man sich das einmal geladene UI, und den dazugehörigen Controller, als Variable ablegt und wiederverwendet. Der zweite Wert hinten bleibt stabil, da immer die gleiche Instanz des ExampleModel verwendet wird.)

Damit das alles funktioniert, muss der RootController aus dem vorherigen Post angepasst werden:
Java:
package eu.dzim.tests.fx;

import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.Optional;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;

public class RootController {

    private final ExampleModel model;

    @FXML private BorderPane root;

    public RootController() {
        this.model = new ExampleModel();
    }

    @FXML
    public void initialize() {
        // if we need something to do, e.g. translations (i18n/l10n)
        showView1();
    }

    @FXML
    public void exitApplication(ActionEvent event) {
        // orderly shutdown the JavaFX application this view belongs to
        Platform.exit();
    }

    @FXML
    public void showView1() {
        // verbose example
        Optional<Pane> optContent = loadCenterContent("View1");
        if (optContent.isPresent())
            root.setCenter(optContent.get());
        
        // Java 8 schortcut with Lambda-Expression
        // loadCenterContent("View1").ifPresent(pane -> root.setCenter(pane));
    }

    @FXML
    public void showView2() {
        loadCenterContent("View2").ifPresent(pane -> root.setCenter(pane));
    }

    private Optional<Pane> loadCenterContent(String fxmlFilename) {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/" + fxmlFilename + ".fxml"));
        Pane pane = null;
        try {
            // don't panic, it's only a lambda expression
            loader.setControllerFactory(param -> {
                try {
                    Constructor<?> zeroArgumentConstructor = param.getConstructor();
                    // create new View[1-2]Controller instance
                    Object controller = zeroArgumentConstructor.newInstance();
                    if (controller instanceof ExampleInterface)
                        ((ExampleInterface) controller).setModel(model); // inject the model
                    return controller;
                } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException
                        | InvocationTargetException e) {
                    e.printStackTrace();
                }
                return null;
            });
            pane = loader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return Optional.ofNullable(pane);
    }
}

Am Anfang wird eine finale Instanz der Klasse ExampleModel angelegt (Variable "model", wird im Konstruktor initiiert).
Damit die Controller das Modell erhalten können, müssen ein paar einfache Voraussetzungen erfüllt sein: Es benötigt einen Konstruktor ohne Argumente (der Einfachheit halber) und muss ExampleInterface implementieren. Darüber hinaus müssen wir dem FXMLLoader beibringen, damit umgehen zu können, dazu benötigen wir ein Callback der auf loader#setControllerFactory angewendet wird.

Das ist auf dem ersten Blick kompliziert, zumal ich hier auch noch ein paar Java8-Sprachfeatures verwende (Lambda-Expressions), aber wenn du einmal verstanden hast, ist es sehr simpel.

Viel Erfolg!
 

stefan.v

Mitglied
@dzim danke für die Ausfühliche erklärung. Wenn ich das jetzt richtig verstehe ist das Modell dafür da, dass ich auf die Variabeln der anderen Klasse zugreifen kann, bzw. der Textfelder?
PS. Es tut mir leid, dass ich erst so spät antworte. Meine letzte Woche war sehr stressig.

LG Stefan
 

dzim

Top Contributor
Nein. Wenn man dem mvc Modell folgt, sind die Views voneinander getrennt. Lediglich die Controller manipulieren den View. Und die Daten liegen im Modell vor. D.h., dass die Textfelder lediglich das Modell aktualisieren. Sollte eine andere GUI die Daten benötigen, Ok. Aber es greift nicht ein Textfeld auf den Inhalt eines anderen zu (außer maximal innerhalb eines Controllers von genau einem View).
Ist in etwa klar geworden, was ich meine?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Georges456 NetBeans am Mac leider ohne FXML AWT, Swing, JavaFX & SWT 17
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
N Braucht man fxml AWT, Swing, JavaFX & SWT 3
S Fehler beim Öffnen weiterer FXML AWT, Swing, JavaFX & SWT 11
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
M mvvm umsetzen ohne fxml AWT, Swing, JavaFX & SWT 0
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
G JavaFX Verständnisfrage mit parametrisierten Methoden und FXML AWT, Swing, JavaFX & SWT 21
Ø Ein FXML-File mehrfach einfügen AWT, Swing, JavaFX & SWT 6
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
OSchriever Auf Stage von FXML-Controller zugreifen AWT, Swing, JavaFX & SWT 12
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
J FXML - Internationalisierung - Behandung key not found AWT, Swing, JavaFX & SWT 39
J import javafx.fxml* bei JavaFX 13 geht nicht mehr AWT, Swing, JavaFX & SWT 7
S JavaFX Variablen in einem FXML File verwenden AWT, Swing, JavaFX & SWT 8
T Fxbefehle aus Main umwandeln in @FXML AWT, Swing, JavaFX & SWT 21
L JavaFX JavaFX, FXML und Guice? AWT, Swing, JavaFX & SWT 0
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
TheWhiteShadow JavaFX Dependencies in fxml AWT, Swing, JavaFX & SWT 17
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
R JavaFX Java FXML Vererbung in Klassen AWT, Swing, JavaFX & SWT 9
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
I MediaPlayer (MediaView) in FXML (source) AWT, Swing, JavaFX & SWT 0
I FXML: StackPane als Root-Element AWT, Swing, JavaFX & SWT 5
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
MiMa Übergeben von Paramter bei FXML Aufruf? AWT, Swing, JavaFX & SWT 8
MiMa Wie bettet man Programmcode in JavaFX FXML ein? AWT, Swing, JavaFX & SWT 34
H Java FX List<AlbumsBean> in FXML TableView AWT, Swing, JavaFX & SWT 37
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
T Pfad zur *.fxml AWT, Swing, JavaFX & SWT 8
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX FXML vs. Java Code AWT, Swing, JavaFX & SWT 3
L Liniendiagramme mit FXML: Quellen mit konkreten Beispielen AWT, Swing, JavaFX & SWT 0
K JavaFX JavaFX und FXML AWT, Swing, JavaFX & SWT 6
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
R Java FX - Fxml - relative Größenangaben für Breite und Höhe einer TextArea AWT, Swing, JavaFX & SWT 8
U JavaFX Zeichenprogramm mit JavaFX FXML AWT, Swing, JavaFX & SWT 7
B Java FX FXML Textarea SceneBuilder als XML Editor AWT, Swing, JavaFX & SWT 1
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
M Java FX SceneBuilder 2.0, FXML, Controller AWT, Swing, JavaFX & SWT 1
B FXML-Layoutdateien schützen AWT, Swing, JavaFX & SWT 4
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
KrokoDiehl JavaFX Gleiche Controller-Instanz für inludiertes FXML AWT, Swing, JavaFX & SWT 1
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S JavaFX FXML-Editor mit Java 7? AWT, Swing, JavaFX & SWT 2
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
M JavaFX FXML Standartgröße festlegen AWT, Swing, JavaFX & SWT 5
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
D JavaFX @FXML Annotation mit Klassen und Instanzen verbinden? AWT, Swing, JavaFX & SWT 5
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
K JavaFX Erzeugen dynamischer Layouts in fxml AWT, Swing, JavaFX & SWT 3
M JavaFX Stage in einer FXML-Controllerklasse ermitteln? AWT, Swing, JavaFX & SWT 5
G Swing, JavaFx - Felder aus FXML sind null AWT, Swing, JavaFX & SWT 6
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
M Komplexe Eingabenmasken in FXML definieren? AWT, Swing, JavaFX & SWT 17
M Java FX Innerhalb einem FXML-Dialog weiteren FXML-Dialog einblenden AWT, Swing, JavaFX & SWT 3
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
M JavaFX Parameter für Custom Control in FXML übergeben? AWT, Swing, JavaFX & SWT 4
C JavaFX Fxml and stylecheets AWT, Swing, JavaFX & SWT 5
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
Tort-E JavaFX FXML Grundsatzfrage AWT, Swing, JavaFX & SWT 2
K Controls in Controls / Nested fxml AWT, Swing, JavaFX & SWT 1
D JavaFX Mysteriöser Dropshadow hinter Tablabelschrift - Schatten kann nicht entfernt werden (FXML + CSS) AWT, Swing, JavaFX & SWT 6
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
S JavaFX FXML AWT, Swing, JavaFX & SWT 3
G JavaFX Fxml AWT, Swing, JavaFX & SWT 2
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
F JavaFX Auf FXML ImageView zugreifen AWT, Swing, JavaFX & SWT 6
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
B JavaFX FXML - Eclipse einrichten AWT, Swing, JavaFX & SWT 2
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
dzim UI aus FXML und Java gemischt - NPE? AWT, Swing, JavaFX & SWT 4
V Guis erstellen mit FXML und javaFX gemischt AWT, Swing, JavaFX & SWT 5
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
Luk10 Laden von eingebundenen .png Datein AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben