JavaFX JavaFX Fehler beim Scenewechsel

War dieser Beitrag gut gestellt?

  • geht so

    Stimmen: 0 0,0%
  • Nein

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    2

Tommy135

Aktives Mitglied
Hallo zusammen,
ich habe ein Problem bei meine JavaFX Anwendung. Ich habe schon auf google gesucht und auch bin ich hier schon auf Foren einträge gestoßen, doch leider funktioniert es immer noch nicht.

Hier mein code der Main.java:
Java:
package application;
  
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {         
            final FXMLLoader loader = new FXMLLoader(getClass().getResource("mainWindow.fxml"));
            final Parent root = (Parent) loader.load();
            Scene scene = new Scene(root);
            primaryStage.setTitle("The Cat Texteditor");
            primaryStage.setScene(scene);         
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        launch(args);
    }
}

Hier ist der Code der Controller Klasse:
Code:
package application;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

import javafx.application.Platform;
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.MenuItem;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;

public class MainWindowControler {
     private Node node;
     private Stage stage;
     private Scene scene;
     private FXMLLoader fxmlLoader;
     private Parent root;
    public Main main;
   
    //Viewers TextArea
    @FXML private TextArea Textfield;
   
   
    //Viewers MenuItems
    @FXML private MenuItem menuopen;
    @FXML private MenuItem menusave;
    @FXML private MenuItem settingmenu;
    @FXML private MenuItem menuexit;
    @FXML private MenuItem menusaveas;
    @FXML private MenuItem menuclosefile;
   
    //Declarationen
   
    public static File fileopen;
   
    public void setMain(Main main)
    {
        this.main = main;
    }
   
    @FXML
    public void openfilemenu()
    {
        JFileChooser openfile = new JFileChooser();
        openfile.removeChoosableFileFilter(openfile.getChoosableFileFilters()[0]);
        openfile.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter FT1 = new FileNameExtensionFilter("The Cat Textdokument *.ssd", "ssd");
        openfile.addChoosableFileFilter(FT1);
        FileNameExtensionFilter FT2 = new FileNameExtensionFilter("The Cat Vorlage *.ssv", "ssv");
        openfile.addChoosableFileFilter(FT2);
        FileNameExtensionFilter FT3 = new FileNameExtensionFilter("The Cat XML Dokument *.ssx", "ssx");
        openfile.addChoosableFileFilter(FT3);
        FileNameExtensionFilter FT4 = new FileNameExtensionFilter("The Cat Configurationsfile *.tcconfig", "tcconfig");
        openfile.addChoosableFileFilter(FT4);
        FileNameExtensionFilter FT5 = new FileNameExtensionFilter("The Cat Colorfile *.tccolor", "tccolor");
        openfile.addChoosableFileFilter(FT5);
        FileNameExtensionFilter FT6 = new FileNameExtensionFilter("The Cat Internetdokument *.ttt", "ttt");
        openfile.addChoosableFileFilter(FT6);
        FileNameExtensionFilter FT7 = new FileNameExtensionFilter("Textdokument *.txt", "txt");
        openfile.addChoosableFileFilter(FT7);
        FileNameExtensionFilter FT8 = new FileNameExtensionFilter("HTM Dokument *.htm", "htm");
        openfile.addChoosableFileFilter(FT8);
        FileNameExtensionFilter FT9 = new FileNameExtensionFilter("HTML Dokument *.html", "html");
        openfile.addChoosableFileFilter(FT9);
        FileNameExtensionFilter FT10 = new FileNameExtensionFilter("SHTM Dokument *.shtm", "shtm");
        openfile.addChoosableFileFilter(FT10);
        FileNameExtensionFilter FT11 = new FileNameExtensionFilter("SHTML Dokument *.shtml", "shtml");
        openfile.addChoosableFileFilter(FT11);
        FileNameExtensionFilter FT12 = new FileNameExtensionFilter("XHTM Dokument *.xhtm", "xhtm");
        openfile.addChoosableFileFilter(FT12);
        FileNameExtensionFilter FT13 = new FileNameExtensionFilter("XHTML Dokument *.xhtml", "xhtml");
        openfile.addChoosableFileFilter(FT13);
        FileNameExtensionFilter FT14 = new FileNameExtensionFilter("XML Dokument *.xml", "xml");
        openfile.addChoosableFileFilter(FT14);
        FileNameExtensionFilter FT15 = new FileNameExtensionFilter("Batch file *.bat", "bat", "cmd");
        openfile.addChoosableFileFilter(FT15);
        FileNameExtensionFilter FT16 = new FileNameExtensionFilter("Unix Shell *.sh", "sh");
        openfile.addChoosableFileFilter(FT16);
        FileNameExtensionFilter FT17 = new FileNameExtensionFilter("C Sourcefile *.c", "c");
        openfile.addChoosableFileFilter(FT17);
        FileNameExtensionFilter FT18 = new FileNameExtensionFilter("C++ Sourcefile *.cpp", "cpp");
        openfile.addChoosableFileFilter(FT18);
        FileNameExtensionFilter FT19 = new FileNameExtensionFilter("C/C++ Headerfile *.h", "h");
        openfile.addChoosableFileFilter(FT19);
        FileNameExtensionFilter FT20 = new FileNameExtensionFilter("Visual Basic Script *.vb", "vb");
        openfile.addChoosableFileFilter(FT20);
        FileNameExtensionFilter FT21 = new FileNameExtensionFilter("C# Script *.cs", "cs");
        openfile.addChoosableFileFilter(FT21);
        FileNameExtensionFilter FT22 = new FileNameExtensionFilter("Java Source *.java", "java");
        openfile.addChoosableFileFilter(FT22);
        FileNameExtensionFilter FT23 = new FileNameExtensionFilter("Java FX XML file *.fxml", "fxml");
        openfile.addChoosableFileFilter(FT23);
        FileNameExtensionFilter FT24 = new FileNameExtensionFilter("Desktopkonfigurationsfile *.ini", "ini");
        openfile.addChoosableFileFilter(FT24);
        FileNameExtensionFilter FT25 = new FileNameExtensionFilter("Desktop file *.desktop", "desktop");
        openfile.addChoosableFileFilter(FT25);
        FileNameExtensionFilter FT26 = new FileNameExtensionFilter("Caskada Stylsheet *.css", "css");
        openfile.addChoosableFileFilter(FT26);
        FileNameExtensionFilter FT27 = new FileNameExtensionFilter("PHP Script Dokument *.php", "php");
        openfile.addChoosableFileFilter(FT27);
        int returnFromopenfile = openfile.showOpenDialog(null);
        if(returnFromopenfile ==JFileChooser.APPROVE_OPTION)
        {
            try
            {
                File file = openfile.getSelectedFile();
            Scanner src = new Scanner(file);
           
            StringBuilder filecontent = new StringBuilder("");
           
            while (src.hasNext())
            {
                filecontent.append(src.nextLine() + "\n");
            }
            fileopen = file;
            Textfield.setText(filecontent.toString());
            src.close();
           
            }
            catch(IOException ex)
            {
                ex.printStackTrace();
            }
            menusave.setDisable(false);
            menuclosefile.setDisable(false);
        }
        else
        {
            menusave.setDisable(true);
            menuclosefile.setDisable(true);
        }
        if(!fileopen.getName().isEmpty())
        {
            menusave.setDisable(false);
            menuclosefile.setDisable(false);
        }
        else
        {
            menusave.setDisable(true);
            menuclosefile.setDisable(true);
        }
    }
    @FXML
    public void savefilemenu()
    {
        String newContent = Textfield.getText();
        try
        (BufferedWriter writer = new BufferedWriter(new FileWriter(fileopen))) {
             writer.write(newContent);
             writer.close();
            
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, "Datei wurde erfolgreich gespeichert.");
    }
    @FXML
    public void opensettingmenu(ActionEvent event)
    {
        try {
            node = (Node) event.getSource();
            stage = (Stage) node.getScene().getWindow();
            scene = stage.getScene();
            fxmlLoader = new FXMLLoader(getClass().getResource("SettingDialogWindow.fxml"));
            root = (Parent) fxmlLoader.load();
            scene.setRoot(root);
        } catch (IOException e) {
            e.printStackTrace();
        }       
    }
    @FXML
    public void exitapplication()
    {
        Platform.exit();
    }
    @FXML
    public void saveasfilemenu()
    {
        JFileChooser openfile = new JFileChooser();
        openfile.removeChoosableFileFilter(openfile.getChoosableFileFilters()[0]);
        openfile.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter FT1 = new FileNameExtensionFilter("The Cat Textdokument *.ssd", "ssd");
        openfile.addChoosableFileFilter(FT1);
        FileNameExtensionFilter FT2 = new FileNameExtensionFilter("The Cat Vorlage *.ssv", "ssv");
        openfile.addChoosableFileFilter(FT2);
        FileNameExtensionFilter FT3 = new FileNameExtensionFilter("The Cat XML Dokument *.ssx", "ssx");
        openfile.addChoosableFileFilter(FT3);
        FileNameExtensionFilter FT4 = new FileNameExtensionFilter("The Cat Configurationsfile *.tcconfig", "tcconfig");
        openfile.addChoosableFileFilter(FT4);
        FileNameExtensionFilter FT5 = new FileNameExtensionFilter("The Cat Colorfile *.tccolor", "tccolor");
        openfile.addChoosableFileFilter(FT5);
        FileNameExtensionFilter FT6 = new FileNameExtensionFilter("The Cat Internetdokument *.ttt", "ttt");
        openfile.addChoosableFileFilter(FT6);
        FileNameExtensionFilter FT7 = new FileNameExtensionFilter("Textdokument *.txt", "txt");
        openfile.addChoosableFileFilter(FT7);
        FileNameExtensionFilter FT8 = new FileNameExtensionFilter("HTM Dokument *.htm", "htm");
        openfile.addChoosableFileFilter(FT8);
        FileNameExtensionFilter FT9 = new FileNameExtensionFilter("HTML Dokument *.html", "html");
        openfile.addChoosableFileFilter(FT9);
        FileNameExtensionFilter FT10 = new FileNameExtensionFilter("SHTM Dokument *.shtm", "shtm");
        openfile.addChoosableFileFilter(FT10);
        FileNameExtensionFilter FT11 = new FileNameExtensionFilter("SHTML Dokument *.shtml", "shtml");
        openfile.addChoosableFileFilter(FT11);
        FileNameExtensionFilter FT12 = new FileNameExtensionFilter("XHTM Dokument *.xhtm", "xhtm");
        openfile.addChoosableFileFilter(FT12);
        FileNameExtensionFilter FT13 = new FileNameExtensionFilter("XHTML Dokument *.xhtml", "xhtml");
        openfile.addChoosableFileFilter(FT13);
        FileNameExtensionFilter FT14 = new FileNameExtensionFilter("XML Dokument *.xml", "xml");
        openfile.addChoosableFileFilter(FT14);
        FileNameExtensionFilter FT15 = new FileNameExtensionFilter("Batch file *.bat", "bat");
        openfile.addChoosableFileFilter(FT15);
        FileNameExtensionFilter FT16 = new FileNameExtensionFilter("Unix Shell *.sh", "sh");
        openfile.addChoosableFileFilter(FT16);
        FileNameExtensionFilter FT17 = new FileNameExtensionFilter("C Sourcefile *.c", "c");
        openfile.addChoosableFileFilter(FT17);
        FileNameExtensionFilter FT18 = new FileNameExtensionFilter("C++ Sourcefile *.cpp", "cpp");
        openfile.addChoosableFileFilter(FT18);
        FileNameExtensionFilter FT19 = new FileNameExtensionFilter("C/C++ Headerfile *.h", "h");
        openfile.addChoosableFileFilter(FT19);
        FileNameExtensionFilter FT20 = new FileNameExtensionFilter("Visual Basic Script *.vb", "vb");
        openfile.addChoosableFileFilter(FT20);
        FileNameExtensionFilter FT21 = new FileNameExtensionFilter("C# Script *.cs", "cs");
        openfile.addChoosableFileFilter(FT21);
        FileNameExtensionFilter FT22 = new FileNameExtensionFilter("Java Source *.java", "java");
        openfile.addChoosableFileFilter(FT22);
        FileNameExtensionFilter FT23 = new FileNameExtensionFilter("Java FX XML file *.fxml", "fxml");
        openfile.addChoosableFileFilter(FT23);
        FileNameExtensionFilter FT24 = new FileNameExtensionFilter("Desktopkonfigurationsfile *.ini", "ini");
        openfile.addChoosableFileFilter(FT24);
        FileNameExtensionFilter FT25 = new FileNameExtensionFilter("Desktop file *.desktop", "desktop");
        openfile.addChoosableFileFilter(FT25);
        FileNameExtensionFilter FT26 = new FileNameExtensionFilter("Caskada Stylsheet *.css", "css");
        openfile.addChoosableFileFilter(FT26);
        FileNameExtensionFilter FT27 = new FileNameExtensionFilter("PHP Script Dokument *.php", "php");
        openfile.addChoosableFileFilter(FT27);
        String newContent = Textfield.getText();
        openfile.showSaveDialog(null);
        File f = new File(openfile.getSelectedFile().getPath() + openfile.getFileFilter().getDescription().substring(openfile.getFileFilter().getDescription().lastIndexOf(".")));
        if(f.exists())
        {
            if(JOptionPane.showConfirmDialog(null, "Die Datei\n" + f + " exestiert bereits.\nWollen sie die Datei überschreiben?", "File Exies", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
            {
                fileopen = f;
                savefilemenu();
                return;
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Speichern abgebrochen!");
                return;
            }
        }
            try {
                f.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erstellen der Datei fehlgeschlagen\n Error 001\n" + e.getMessage());
            }
            try {
                BufferedWriter wirter = new BufferedWriter(new FileWriter(f));
                wirter.write(newContent);
                wirter.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, "Schreiben der Datei Fehlgeschlagen\nError 001\n" + e.getMessage());
            }
            if(f.exists())
            {
                JOptionPane.showMessageDialog(null, "Die Datei " + f + " wurde erfolgreich gespeichert.");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Speichern fehlgeschlagen.\nError 001");
            }
        }
    @FXML
    public void closefilemenu()
    {
        Textfield.clear();
        fileopen = null;
        menusave.setDisable(true);
        menuclosefile.setDisable(true);
    }
}

Hier der Code der mainWindow.fxml

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

<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="400.0" prefWidth="500.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainWindowControler">
   <children>
      <MenuBar layoutX="149.0" layoutY="14.0" AnchorPane.bottomAnchor="371.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
         <menus>
            <Menu mnemonicParsing="false" text="Datei">
               <items>
                  <MenuItem fx:id="menuopen" mnemonicParsing="false" onAction="#openfilemenu" text="Öffnen" />
                  <MenuItem fx:id="menusave" disable="true" mnemonicParsing="false" onAction="#savefilemenu" text="Speichen" />
                  <MenuItem fx:id="menusaveas" mnemonicParsing="false" onAction="#saveasfilemenu" text="Speichern unter" />
                  <SeparatorMenuItem mnemonicParsing="false" />
                  <MenuItem fx:id="menuclosefile" disable="true" mnemonicParsing="false" onAction="#closefilemenu" text="Datei Schließen" />
                  <MenuItem fx:id="menuexit" mnemonicParsing="false" onAction="#exitapplication" text="Beenden" />
               </items>
            </Menu>
            <Menu mnemonicParsing="false" text="Bearbeiten">
               <items>
                  <MenuItem fx:id="settingmenu" mnemonicParsing="false" onAction="#opensettingmenu" text="Einstellungen" />
               </items>
            </Menu>
         </menus>
      </MenuBar>
      <TextArea fx:id="Textfield" layoutX="93.0" layoutY="141.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="29.0" />
   </children>
</AnchorPane>

Hier der Code der SettingDialogWindow.fxml

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

<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>


<AnchorPane prefHeight="200.0" prefWidth="200.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
    <!-- TODO Add Nodes -->
</AnchorPane>

Und ich bekomme immer Folgende Fehler Meldung:

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:381)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
    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.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
    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:498)
    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:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769)
    ... 43 more
Caused by: java.lang.ClassCastException: javafx.scene.control.MenuItem cannot be cast to javafx.scene.Node
    at application.MainWindowControler.opensettingmenu(MainWindowControler.java:175)
    ... 53 more

Ich verwende Linux Ubuntu LTS Aktuellste Version
Nutze OpenJDK und Java 1.8
Nutze als IDE Eclipse neuste Version mit e(fx)eclipse Plugin.

Jezt meine Frage wo ist der Fehler, ich habe wie schon oben erwähnt mich hier durch ein paar Fren geklickt aber es funktioniert nicht so wie ich es will. Es wäre schön wenn mir da jemand helfen könnte. Das Programm soll ein Texteditor werden. Ich stelle die Project daten zu verfügung da mit sich das jemmand das mal bitte in ruhe anschauen kann.

Danke schonmal im vorraus für die Hilfe.

mfG

Tommy135
 

Anhänge

  • The Cat Texteditor.zip
    15,5 KB · Aufrufe: 5

knilch

Bekanntes Mitglied
Hi,
Das Problem in deiner Varainte ist, dass eine Cast-Exception auftritt. Du versuchst ein MenuItem in einen Node zu casten.
Du kannst es so machen:
in der Klasse: MainWindowControler erstellst du eine Variable; diese wird mit einer SetterMethode beim Start gesetzt:
MainWindowControler.java
Java:
...
private Stage stage;
...
public void setPrimaryStage(Stage stage) {
       this.stage = stage;
   }
...
Dann änderst du noch die action-Methode: opensettingmenu(Action event)
Java:
public void opensettingmenu(ActionEvent event)
    {
        try {
            scene = stage.getScene();
            fxmlLoader = new FXMLLoader(getClass().getResource("SettingDialogWindow.fxml"));
            root = (Parent) fxmlLoader.load();
            scene.setRoot(root);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

in der Methode start(Stage stage) von Main.java änderst du so ab:
Java:
...
    @Override
   public void start(Stage stage) {
       try {
           FXMLLoader loader = new FXMLLoader(getClass().getResource("mainWindow.fxml"));
           Parent root = (Parent)loader.load();
           MainWindowControler mainWindowControler = (MainWindowControler)loader.getController();
           mainWindowControler.setPrimaryStage(stage);
           Scene scene = new Scene(root);
           stage.setTitle("The Cat Texteditor");
           stage.setScene(scene);
           stage.show();
       } catch(Exception e) {
           e.printStackTrace();
       }
   }
...
Damit wird beim Drücken auf das MenuItem: Einstellungen die Scene mit dem SettingDialogWindow geladen.
Vielleicht ist es noch zu früh um dies anzusprechen, aber du solltest dir Gedanken machen, wie dieser "Editor" ausehen soll.
Wenn du dir z.B. Eclipse oder Firefox anschaust, dann werden Menu-Funktionen meist über separate Fenster oder Dialoge ausgeführt. Das "Hauptfenster" bleibt dabei stets vorhanden (oder ist hidden).
Bei deiner Variante lädst du im "Hauptfenster" ein neues, komplett unterschiedliches Verhalten, das eigentlich nur Erweiterungen für den "Editor" zur Verfügung stellt.
Diese Funktionen gehören meiner Meinung nach in ein separates Fenster oder einen Dialog und sollten so vom "Hauptfenster" getrennt sein.
Aber wie geschrieben, das ist meine Meinung.
Gruss knlich
 
Zuletzt bearbeitet:

Tommy135

Aktives Mitglied
Vielen dank für die schnelle Antwort. Über das Design in diesem sinne habe ich mir noch nicht Gedanken gemacht, aber danke für den Ratschlag.

Gruß

Tomm135
 

dzim

Top Contributor
Mal abgesehen vom Cast:
  1. Warum speicherst du die Informationen aus deiner "opensettingmenu"-Methode nicht schon in der initilialize-Methode (einfach eine Methode, public bis private, mit diesem Namen, ohne Argumente, dafür aber mit der @FXML-Annotation erstellen)?
  2. Warum tust dasselbe nicht mit den Filtern aus der "openfilemenu"-Methode?
  3. Wenn du weisst, was du in der Methode für eine Quelle hast, warum dann überhaupte der Cast?
  4. Warum nicht einfach auf die entsprechende Instanz-Variable deines Controllers direkt zugreifen?
    1. Dieses Vorgehen macht nur Sinn, wenn du mehrere Actions über eine einzige Methode abweickeln würdest, also wenn z.B. open, save und exit die selbe Methode verwenden würden...
 

dzim

Top Contributor
Hm... Vielleicht mach ich aus deinem Code mal ein Beispiel und versuche mich mal dran - hatte aber bisher noch keine Zeit...
 

Tommy135

Aktives Mitglied
Ok, bis her leider kein Erfolg, bekomme zurzeit in der Main klasse Nullpointe Fehler. Versuche aber weiter dran zu arbeiten. Ich bin aber gerne für weitere Vorschläge.
 

dzim

Top Contributor
Also. Ich hab es dir mit ein paar Kleinen Änderungen korrigiert. Im Anschluss kommt dann noch etwas Kritik und ein paar Anregungen von mir.

Main.java
Java:
package application;

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

public class Main extends Application {
   
    private Stage stage;
    private Scene scene;
   
    public Main() {
        // default constructor
    }
   
    public Stage getStage() {
        return stage;
    }
   
    public Scene getScene() {
        return scene;
    }
   
    @Override
    public void start(Stage primaryStage) {
        this.stage = primaryStage;
       
        try {
           
            final FXMLLoader loader = new FXMLLoader(getClass().getResource("mainWindow.fxml"));
            final Parent root = (Parent) loader.load();
            MainWindowControler controller = loader.getController();
            controller.setMain(this);
           
            scene = new Scene(root);
            primaryStage.setTitle("The Cat Texteditor");
            primaryStage.setScene(scene);
            primaryStage.show();
           
        } catch (Exception e) {
            e.printStackTrace();
        }
       
    }
   
    public static void main(String[] args) {
        launch(args);
    }
}

MainWindowControler.java
Java:
package application;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextArea;

public class MainWindowControler {
   
    public Main main;
   
    // Viewers TextArea
    @FXML private TextArea Textfield;
   
    // Viewers MenuItems
    @FXML private MenuItem menuopen;
    @FXML private MenuItem menusave;
    @FXML private MenuItem settingmenu;
    @FXML private MenuItem menuexit;
    @FXML private MenuItem menusaveas;
    @FXML private MenuItem menuclosefile;
   
    // Declarationen
   
    public static File fileopen;
   
    public void setMain(Main main) {
        this.main = main;
    }
   
    @FXML
    public void openfilemenu() {
        JFileChooser openfile = new JFileChooser();
        openfile.removeChoosableFileFilter(openfile.getChoosableFileFilters()[0]);
        openfile.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter FT1 = new FileNameExtensionFilter("The Cat Textdokument *.ssd", "ssd");
        openfile.addChoosableFileFilter(FT1);
        FileNameExtensionFilter FT2 = new FileNameExtensionFilter("The Cat Vorlage *.ssv", "ssv");
        openfile.addChoosableFileFilter(FT2);
        FileNameExtensionFilter FT3 = new FileNameExtensionFilter("The Cat XML Dokument *.ssx", "ssx");
        openfile.addChoosableFileFilter(FT3);
        FileNameExtensionFilter FT4 = new FileNameExtensionFilter("The Cat Configurationsfile *.tcconfig", "tcconfig");
        openfile.addChoosableFileFilter(FT4);
        FileNameExtensionFilter FT5 = new FileNameExtensionFilter("The Cat Colorfile *.tccolor", "tccolor");
        openfile.addChoosableFileFilter(FT5);
        FileNameExtensionFilter FT6 = new FileNameExtensionFilter("The Cat Internetdokument *.ttt", "ttt");
        openfile.addChoosableFileFilter(FT6);
        FileNameExtensionFilter FT7 = new FileNameExtensionFilter("Textdokument *.txt", "txt");
        openfile.addChoosableFileFilter(FT7);
        FileNameExtensionFilter FT8 = new FileNameExtensionFilter("HTM Dokument *.htm", "htm");
        openfile.addChoosableFileFilter(FT8);
        FileNameExtensionFilter FT9 = new FileNameExtensionFilter("HTML Dokument *.html", "html");
        openfile.addChoosableFileFilter(FT9);
        FileNameExtensionFilter FT10 = new FileNameExtensionFilter("SHTM Dokument *.shtm", "shtm");
        openfile.addChoosableFileFilter(FT10);
        FileNameExtensionFilter FT11 = new FileNameExtensionFilter("SHTML Dokument *.shtml", "shtml");
        openfile.addChoosableFileFilter(FT11);
        FileNameExtensionFilter FT12 = new FileNameExtensionFilter("XHTM Dokument *.xhtm", "xhtm");
        openfile.addChoosableFileFilter(FT12);
        FileNameExtensionFilter FT13 = new FileNameExtensionFilter("XHTML Dokument *.xhtml", "xhtml");
        openfile.addChoosableFileFilter(FT13);
        FileNameExtensionFilter FT14 = new FileNameExtensionFilter("XML Dokument *.xml", "xml");
        openfile.addChoosableFileFilter(FT14);
        FileNameExtensionFilter FT15 = new FileNameExtensionFilter("Batch file *.bat", "bat", "cmd");
        openfile.addChoosableFileFilter(FT15);
        FileNameExtensionFilter FT16 = new FileNameExtensionFilter("Unix Shell *.sh", "sh");
        openfile.addChoosableFileFilter(FT16);
        FileNameExtensionFilter FT17 = new FileNameExtensionFilter("C Sourcefile *.c", "c");
        openfile.addChoosableFileFilter(FT17);
        FileNameExtensionFilter FT18 = new FileNameExtensionFilter("C++ Sourcefile *.cpp", "cpp");
        openfile.addChoosableFileFilter(FT18);
        FileNameExtensionFilter FT19 = new FileNameExtensionFilter("C/C++ Headerfile *.h", "h");
        openfile.addChoosableFileFilter(FT19);
        FileNameExtensionFilter FT20 = new FileNameExtensionFilter("Visual Basic Script *.vb", "vb");
        openfile.addChoosableFileFilter(FT20);
        FileNameExtensionFilter FT21 = new FileNameExtensionFilter("C# Script *.cs", "cs");
        openfile.addChoosableFileFilter(FT21);
        FileNameExtensionFilter FT22 = new FileNameExtensionFilter("Java Source *.java", "java");
        openfile.addChoosableFileFilter(FT22);
        FileNameExtensionFilter FT23 = new FileNameExtensionFilter("Java FX XML file *.fxml", "fxml");
        openfile.addChoosableFileFilter(FT23);
        FileNameExtensionFilter FT24 = new FileNameExtensionFilter("Desktopkonfigurationsfile *.ini", "ini");
        openfile.addChoosableFileFilter(FT24);
        FileNameExtensionFilter FT25 = new FileNameExtensionFilter("Desktop file *.desktop", "desktop");
        openfile.addChoosableFileFilter(FT25);
        FileNameExtensionFilter FT26 = new FileNameExtensionFilter("Caskada Stylsheet *.css", "css");
        openfile.addChoosableFileFilter(FT26);
        FileNameExtensionFilter FT27 = new FileNameExtensionFilter("PHP Script Dokument *.php", "php");
        openfile.addChoosableFileFilter(FT27);
        int returnFromopenfile = openfile.showOpenDialog(null);
        if (returnFromopenfile == JFileChooser.APPROVE_OPTION) {
            try {
                File file = openfile.getSelectedFile();
                Scanner src = new Scanner(file);
               
                StringBuilder filecontent = new StringBuilder("");
               
                while (src.hasNext()) {
                    filecontent.append(src.nextLine() + "\n");
                }
                fileopen = file;
                Textfield.setText(filecontent.toString());
                src.close();
               
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            menusave.setDisable(false);
            menuclosefile.setDisable(false);
        } else {
            menusave.setDisable(true);
            menuclosefile.setDisable(true);
        }
        if (!fileopen.getName().isEmpty()) {
            menusave.setDisable(false);
            menuclosefile.setDisable(false);
        } else {
            menusave.setDisable(true);
            menuclosefile.setDisable(true);
        }
    }
   
    @FXML
    public void savefilemenu() {
        String newContent = Textfield.getText();
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileopen))) {
            writer.write(newContent);
            writer.close();
           
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, "Datei wurde erfolgreich gespeichert.");
    }
   
    @FXML
    public void opensettingmenu(ActionEvent event) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("SettingDialogWindow.fxml"));
            Parent root = (Parent) fxmlLoader.load();
            main.getScene().setRoot(root);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    @FXML
    public void exitapplication() {
        Platform.exit();
    }
   
    @FXML
    public void saveasfilemenu() {
        JFileChooser openfile = new JFileChooser();
        openfile.removeChoosableFileFilter(openfile.getChoosableFileFilters()[0]);
        openfile.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter FT1 = new FileNameExtensionFilter("The Cat Textdokument *.ssd", "ssd");
        openfile.addChoosableFileFilter(FT1);
        FileNameExtensionFilter FT2 = new FileNameExtensionFilter("The Cat Vorlage *.ssv", "ssv");
        openfile.addChoosableFileFilter(FT2);
        FileNameExtensionFilter FT3 = new FileNameExtensionFilter("The Cat XML Dokument *.ssx", "ssx");
        openfile.addChoosableFileFilter(FT3);
        FileNameExtensionFilter FT4 = new FileNameExtensionFilter("The Cat Configurationsfile *.tcconfig", "tcconfig");
        openfile.addChoosableFileFilter(FT4);
        FileNameExtensionFilter FT5 = new FileNameExtensionFilter("The Cat Colorfile *.tccolor", "tccolor");
        openfile.addChoosableFileFilter(FT5);
        FileNameExtensionFilter FT6 = new FileNameExtensionFilter("The Cat Internetdokument *.ttt", "ttt");
        openfile.addChoosableFileFilter(FT6);
        FileNameExtensionFilter FT7 = new FileNameExtensionFilter("Textdokument *.txt", "txt");
        openfile.addChoosableFileFilter(FT7);
        FileNameExtensionFilter FT8 = new FileNameExtensionFilter("HTM Dokument *.htm", "htm");
        openfile.addChoosableFileFilter(FT8);
        FileNameExtensionFilter FT9 = new FileNameExtensionFilter("HTML Dokument *.html", "html");
        openfile.addChoosableFileFilter(FT9);
        FileNameExtensionFilter FT10 = new FileNameExtensionFilter("SHTM Dokument *.shtm", "shtm");
        openfile.addChoosableFileFilter(FT10);
        FileNameExtensionFilter FT11 = new FileNameExtensionFilter("SHTML Dokument *.shtml", "shtml");
        openfile.addChoosableFileFilter(FT11);
        FileNameExtensionFilter FT12 = new FileNameExtensionFilter("XHTM Dokument *.xhtm", "xhtm");
        openfile.addChoosableFileFilter(FT12);
        FileNameExtensionFilter FT13 = new FileNameExtensionFilter("XHTML Dokument *.xhtml", "xhtml");
        openfile.addChoosableFileFilter(FT13);
        FileNameExtensionFilter FT14 = new FileNameExtensionFilter("XML Dokument *.xml", "xml");
        openfile.addChoosableFileFilter(FT14);
        FileNameExtensionFilter FT15 = new FileNameExtensionFilter("Batch file *.bat", "bat");
        openfile.addChoosableFileFilter(FT15);
        FileNameExtensionFilter FT16 = new FileNameExtensionFilter("Unix Shell *.sh", "sh");
        openfile.addChoosableFileFilter(FT16);
        FileNameExtensionFilter FT17 = new FileNameExtensionFilter("C Sourcefile *.c", "c");
        openfile.addChoosableFileFilter(FT17);
        FileNameExtensionFilter FT18 = new FileNameExtensionFilter("C++ Sourcefile *.cpp", "cpp");
        openfile.addChoosableFileFilter(FT18);
        FileNameExtensionFilter FT19 = new FileNameExtensionFilter("C/C++ Headerfile *.h", "h");
        openfile.addChoosableFileFilter(FT19);
        FileNameExtensionFilter FT20 = new FileNameExtensionFilter("Visual Basic Script *.vb", "vb");
        openfile.addChoosableFileFilter(FT20);
        FileNameExtensionFilter FT21 = new FileNameExtensionFilter("C# Script *.cs", "cs");
        openfile.addChoosableFileFilter(FT21);
        FileNameExtensionFilter FT22 = new FileNameExtensionFilter("Java Source *.java", "java");
        openfile.addChoosableFileFilter(FT22);
        FileNameExtensionFilter FT23 = new FileNameExtensionFilter("Java FX XML file *.fxml", "fxml");
        openfile.addChoosableFileFilter(FT23);
        FileNameExtensionFilter FT24 = new FileNameExtensionFilter("Desktopkonfigurationsfile *.ini", "ini");
        openfile.addChoosableFileFilter(FT24);
        FileNameExtensionFilter FT25 = new FileNameExtensionFilter("Desktop file *.desktop", "desktop");
        openfile.addChoosableFileFilter(FT25);
        FileNameExtensionFilter FT26 = new FileNameExtensionFilter("Caskada Stylsheet *.css", "css");
        openfile.addChoosableFileFilter(FT26);
        FileNameExtensionFilter FT27 = new FileNameExtensionFilter("PHP Script Dokument *.php", "php");
        openfile.addChoosableFileFilter(FT27);
        String newContent = Textfield.getText();
        openfile.showSaveDialog(null);
        File f = new File(openfile.getSelectedFile().getPath()
                + openfile.getFileFilter().getDescription().substring(openfile.getFileFilter().getDescription().lastIndexOf(".")));
        if (f.exists()) {
            if (JOptionPane.showConfirmDialog(null, "Die Datei\n" + f + " exestiert bereits.\nWollen sie die Datei überschreiben?", "File Exies",
                    JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                fileopen = f;
                savefilemenu();
                return;
            } else {
                JOptionPane.showMessageDialog(null, "Speichern abgebrochen!");
                return;
            }
        }
        try {
            f.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erstellen der Datei fehlgeschlagen\n Error 001\n" + e.getMessage());
        }
        try {
            BufferedWriter wirter = new BufferedWriter(new FileWriter(f));
            wirter.write(newContent);
            wirter.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Schreiben der Datei Fehlgeschlagen\nError 001\n" + e.getMessage());
        }
        if (f.exists()) {
            JOptionPane.showMessageDialog(null, "Die Datei " + f + " wurde erfolgreich gespeichert.");
        } else {
            JOptionPane.showMessageDialog(null, "Speichern fehlgeschlagen.\nError 001");
        }
    }
   
    @FXML
    public void closefilemenu() {
        Textfield.clear();
        fileopen = null;
        menusave.setDisable(true);
        menuclosefile.setDisable(true);
    }
}

Kritik
  • Verwendung von Swing-Komponenten anstelle von JavaFX
    • JFileChooser -> javafx.stage.FileChooser (auch für Directories)
    • JOptionPane -> javafx.scene.control.Alert
  • Austauschen des Scene-Root
    • Machbar (wie ich hier gezeigt hab), aber unschön -> warum kein javafx.scene.control.Dialog? Oder sogar eine eigene neue Stage (Fenster)
    • Alternative: Root-Layout hat ein Element, dass du austauschen kannst (z.B. Text-Editor gegen was anderes tauschen - häufig (aber nicht immer) mein preferierter Weg)
Anregungen
Und im Zweifelsfall
FRAGEN! :)
 

Tommy135

Aktives Mitglied
Wie mach das am besten wenn ich ein Neues Fenster machen möchte? hatte mal ein Test Project gemacht wo ich eine zweite Stage erzeugt habe, abe da bekamm ich auch nur fehler.
 

Tommy135

Aktives Mitglied
Super! Es funktioniert, danke dzim. Ich nehme gerne Verbesserungsvorschläge entgegen, diese Projekt ist keine Hausaufgabe sondern ein versuch meine Ergebnisse in Java um zu setzen was mal früher in VB.Net gemacht habe.
 

dzim

Top Contributor
Für ein neues Fenster kannst du in etwa so hier vorgehen:

Java:
    @FXML
    public void opensettingmenu(ActionEvent event) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("SettingDialogWindow.fxml"));
            Parent root = (Parent) fxmlLoader.load();
           
            // anstelle von
            // main.getScene().setRoot(root);

            // neue Scene mit dem geladenen root
            // Grösse festlegen
            Scene settingsScene = new Scene(root, 640, 480);
           
            // Stage ist "Utility"-Fenster (Beeinflusst die Fensterdekoration)
            Stage settingsStage = new Stage(StageStyle.UTILITY);
            // das Eltern-Fenster festlegen
            settingsStage.initOwner(main.getStage());
            // Verhindere, dass alle Fenster der Eltern-Hirarchie angeklickt werden könne
            // NONE = jedes Fenster kann geklickt werden
            // WINDOW_MODAL = kein Fenter der Eltern-Hirarchie, aber andere Fenster, die darunter erstellt wurden
            // APPLICATION_MODaL = kein Fenster anklickbar
            settingsStage.initModality(Modality.WINDOW_MODAL);
            // ist klar
            settingsStage.setTitle("Settings");
            // ist auch klar
            settingsStage.setScene(settingsScene);
            // wenn du auf "schliessen"-Events reagieren möchtes, oder sie sogar ablehnen willst -> event.consume()
            // funktioniert natürlich auch bei der PrimaryStage im Main
            settingsStage.setOnCloseRequest(closeEvent -> {
                // react to it in any way
            });
            settingsStage.setOnShown(showEvent -> {
                // z.B. asynchrones Laden von Daten, etc.
            });
            // zeigt das Fenster, blockert aber hier nicht
            // showAndWait() eröffnet dagegen einen "nested-event-loop"
            // -> wenn du auf ein Ergebnis warten möchtest, dann showAndWait, sonst show
            // -> Ergebnis aber auch über die setOnCloseRequest möglich - geht in Richtung reaktives Programmieren
            settingsStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 

Tommy135

Aktives Mitglied
Danke für die Hilfe mit dem Fenster, es funktioniert alles wie es soll. Die Sache mit den Radiobutton bekomme ich auch noch hin, bis jetzt noch nicht :) sollte ich gar nicht weiter kommen melde ich mich noch mal.
 

Tommy135

Aktives Mitglied
Vielleicht kann mit jemand ja noch einen tipp geben wie das Problehm mit der RadioButton abfrage löse, es sind dre Radio Buttons, aber es soll nur eine Aktiv sein. Bekomme abe nur Fehler und es klappt nicht. Hier mal der Code:

Code:
public void Singlewahl1()
    {
        W.setSelected(true);
        if(L.isSelected())
        {
            L.setSelected(false);
        }
        if(M.isSelected())
        {
            M.setSelected(false);
        }
    }
    public void Singlewahl2()
    {
        if(W.isSelected())
        {
            W.setSelected(false);
        }
        L.setSelected(true);
        if(M.isSelected())
        {
            M.setSelected(false);
        }
    }
    public void Singlewahl3()
    {
        if(W.isSelected())
        {
            W.setSelected(false);
        }
        if(L.isSelected())
        {
            L.setSelected(false);
        }
      
        M.setSelected(true);
    }

Und hier die Fewhler Meldung:

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.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$ClickGenerator.postProcess(Scene.java:3470)
    at javafx.scene.Scene$ClickGenerator.access$8100(Scene.java:3398)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3766)
    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:381)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
    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.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
    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:498)
    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:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
    ... 33 more
Caused by: java.lang.NullPointerException
    at application.Settingdialogcontroler.Singlewahl2(Settingdialogcontroler.java:32)
    ... 43 more

Dann sollte fürs erste alles so sein wie es soll. Hoffentlich. Danke im voraus für die Hilfe und Mühen.
 

dzim

Top Contributor
Ich würde in dem Fall wohl ein Fenster machen.
Bzgl. deines Fehlers:
  1. Du brauchst eine ToggleGroup. Diese weisst du den RadioButtons zu und schwupps - kann man nur eines wählen.
  2. Die Fehlermeldung sagt aber noch "Settingdialogcontroler.java:32" -> Zeile 32 in der Klasse ist "null"
    • also ist "W", "M", oder "L" noch nicht initialisiert
    • Übrigens: Das sind Variablennamen, die du nicht verwenden willst!
      • Variablen grundsätzlich klein schreiben
      • vollen Namen geben (du weisst sonst später nicht mal mehr selbst, was sie bedeuten sollen, ohne dich noch mal in den Code einzulesen).
 

Tommy135

Aktives Mitglied
Ok danke. Mit den Variabeln Name das war mehr ein Test, prinzipiell nehme ich volle Namen und schreibe sie klein sonst bin ich bei großen Projekten überfordert.
 

Tommy135

Aktives Mitglied
Ok, YouTube und google bringen mich zwar in die richtige Richtung mit der ToggleGroup aber nicht auf die Lösung.

So sieht momentan die FXML für die Einstellungen aus:

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

<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="400.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Settingdialogcontroler">
   <children>
      <TabPane layoutX="68.0" layoutY="60.0" prefHeight="240.0" prefWidth="219.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <tabs>
          <Tab text="Zeilenende">
            <content>
              <AnchorPane minHeight="0.0" minWidth="0.0" onMouseDragged="#singlewahl" onMouseEntered="#singlewahl" onMouseMoved="#singlewahl" prefHeight="180.0" prefWidth="200.0">
                     <children>
                        <RadioButton fx:id="l" layoutX="5.0" layoutY="28.0" mnemonicParsing="false" text="RadioButton" />
                        <RadioButton fx:id="m" layoutX="20.0" layoutY="51.0" mnemonicParsing="false" text="RadioButton" />
                        <RadioButton fx:id="w" mnemonicParsing="false" text="RadioButton" />
                     </children>
                  </AnchorPane>
            </content>
          </Tab>
        </tabs>
      </TabPane>
   </children>
</AnchorPane>

So sieht die Controller Klasse aus:

Java:
package application;

import javafx.scene.control.*;

public class Settingdialogcontroler {
    public  Main main;
   
    //Viewers RadioButton
    private RadioButton w;
    private RadioButton l;
    private RadioButton m;
   
   
    public void setMain(Main main)
    {
        this.main = main;
    }
    public void singlewahl()
    {
        final ToggleGroup group = new ToggleGroup();
        w.setToggleGroup(group);
        w.setSelected(true);
        l.setToggleGroup(group);
        m.setToggleGroup(group);
    }
}

Die Variabeln Namen sind nur zu test zwecken. Aber das Problehm ist ich bekomme folgenden Fehler:

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.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 com.sun.javafx.event.EventQueue.fire(EventQueue.java:48)
    at javafx.scene.Scene$MouseHandler.handleEnterExit(Scene.java:3676)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3742)
    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:381)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$354(GlassViewEventHandler.java:417)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)
    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.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
    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:498)
    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:498)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)
    ... 33 more
Caused by: java.lang.NullPointerException
    at application.Settingdialogcontroler.singlewahl(Settingdialogcontroler.java:21)
    ... 43 more

Was mach ich mit der ToggleGroup falsch? In den Videos wurde nicht mit FXML gearbeit, jedoch hat dort dieser aufbau funktioniert. Ich komme nicht weiter...
 

Kababär

Top Contributor
Ich würde mal spontan behaupten, dass die "@FXML" Annotations für die RadioButtons fehlen, weshalb diese nicht injected werden und deshalb null sein. Und deswegen fliegt eine NullPointerException wenn du spätestens "w.setToggleGroup(group);" aufrufen willst.

Code:
@FXML
private RadioButton w;
@FXML
private RadioButton l;
@FXML
private RadioButton m;

oder in einer Zeile

Code:
@FXML
private RadioButton w,l,m;
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
parrot JavaFX Fehler AWT, Swing, JavaFX & SWT 4
H JavaFX JavaFX Import Fehler AWT, Swing, JavaFX & SWT 4
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
M Zufallsgenerator bei JavaFx AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX, MVVM und SceneBuilder AWT, Swing, JavaFX & SWT 4
S JavaFx Album AWT, Swing, JavaFX & SWT 137
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
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
J JavaFX JavaFX/ Taskmenu / UML Klassendiagramm AWT, Swing, JavaFX & SWT 2
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
C MouseEvent JavaFX AWT, Swing, JavaFX & SWT 4
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
G javafx build.fxbuild in eclipse und ANT AWT, Swing, JavaFX & SWT 9
M Kollisionensbehandlung mit JavaFX AWT, Swing, JavaFX & SWT 1
N JavaFX - Toolkit not initialized AWT, Swing, JavaFX & SWT 6
G JavaFX , Duplicate erzeugt aber ich weis nicht wo AWT, Swing, JavaFX & SWT 4
K Javafx Plugin (javafx:jlink) mit moditect Plugin nutzen ... AWT, Swing, JavaFX & SWT 5
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
Z JavaFX JavaFX Spinner AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28

Ähnliche Java Themen

Neue Themen


Oben