2

I have an issue with my app. I'm trying to make an app that works perfectly fine with the command prompt but with a nice interface to get a better user experience. To do so I chose Javafx that looks better than swing to me.
But it do not work. I don't understand what's wrong. Here is my Main app code :

package ch.makery.adress;

import java.io.IOException;

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


public class MainApp extends Application {



    @Override
    public void start(Stage stage) throws Exception {
        Parent parent = FXMLLoader.load(getClass().getResource("PersonOverview.fxml"));
        Scene scene = new Scene(parent);
        stage.setTitle("Appication Extraction et remplissage Excel");
        stage.setScene(scene);
        stage.show();


}
}

My Hexacontroller :

package ch.makery.adress;

import java.awt.FileDialog;
import java.awt.List;
import java.io.File;
import java.io.IOException;
import javafx.fxml.Initializable;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ResourceBundle;
import javax.swing.JFrame;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.Number;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class HexaController implements Initializable {
    static org.jdom2.Document document;
    static JFrame fileDialog;
    static Element racine;
    static String Nom_dar;
    static java.util.List<Element> listeDAS;
    static ArrayList <String> Nom_das=new ArrayList();
    static ArrayList <String> Nom_task=new ArrayList();
    static ArrayList <String> Nom_Variable1=new ArrayList();
    static ArrayList <String> Resultat_Variable1=new ArrayList();
    static ArrayList <Double> Resultat_Variabledouble1=new ArrayList<Double>();
    static ArrayList <String> ResultatHexa_Variable1=new ArrayList<String>();
    static ArrayList <String> Lien=new ArrayList();
    static java.util.List<Element> ListeTRIAL;
    static java.util.List<Element> listeTASK;
    static java.util.List<Element> listeOperation;
    static List listeOperation_delta;
    static java.util.List<Element> listeArgument;
    static List listeArgument_delta;

        @FXML
        private ComboBox<String> hexa;
        ObservableList<String> list = FXCollections.observableArrayList();
        @FXML
        private TextField entree;

        @FXML
        private TextField nomfichier;

        @FXML
        private static TextField excel;

        @FXML
        private static TextField sortie;


        @FXML
        private void dar(ActionEvent event){
            FileDialog fd1=new FileDialog(fileDialog,"Choisissez un fichier .dar",FileDialog.LOAD);
            fd1.setDirectory("C:\\");
            fd1.setVisible(true);
            String filename1=fd1.getFile();
            String Directory1=fd1.getDirectory();
            String path1=Directory1 + filename1;
            entree.setText(path1);
            nomfichier.setText(filename1);
        }

        @FXML
        private void modele(ActionEvent event){
            JFrame parentFrame=new JFrame();
             FileDialog filechooser = new FileDialog (parentFrame, "Choisir un modèle Excel à copier",FileDialog.LOAD);
             filechooser.setDirectory("C:\\");
             filechooser.setVisible(true);
             String directory_copy = filechooser.getDirectory();
             String name_copy= filechooser.getFile();
             String path_copy = (directory_copy+name_copy);
             excel.setText(path_copy);
        }

        @FXML
        private void sortie (ActionEvent event){
            JFrame parentFrame2=new JFrame();
             FileDialog filechooser2 = new FileDialog (parentFrame2, "Choisir une destination d'enregistrement",FileDialog.SAVE);
             filechooser2.setDirectory("C:\\");
             filechooser2.setVisible(true);
             String directory_save = filechooser2.getDirectory();
             String name_save= filechooser2.getFile();
             String path_save = (directory_save+name_save+".xls");
             sortie.setText(path_save);
        }
        @FXML
        private void annuler (ActionEvent event){
            System.exit(0);
        }


        @FXML
        private static ComboBox<Integer>methode;
        ObservableList<Integer>nombre = FXCollections.observableArrayList();

        @FXML
        private void exe (ActionEvent event) throws Throwable{
            SAXBuilder sxb = new SAXBuilder();
            String filename1=nomfichier.getText();
            if(filename1==null)
            {
                    System.out.println("Annulation");
                    System.exit(0);
            }
            else
            {
                try
                {
                    //On crée un nouveau document JDOM avec en argument le fichier XML
                    //Le parsing est terminé 
                    String path1=entree.getText();
                    document = sxb.build(new File(path1));
                    //On initialise un nouvel élément racine avec l'élément racine du document.
                    racine = document.getRootElement();
                    System.out.println("Lecture du premier .dar");
                }
                catch(Exception e)
                {
                    System.out.println("FATAL ERROR !");
                    System.exit(0);
                }
            }
            afficheALL();

            Xl();
        }


    //RECUPERATION DES DONNEES DU FICHIER DAR

        static void afficheALL()
        {
            //Variables Locales
            String Str;
            String Str_bis;
            Nom_dar=racine.getAttributeValue("label");

            System.out.println("Nom du fichier dar : " + Nom_dar+"\n");

            listeDAS= racine.getChildren("DAS");
            //On crée un Iterator sur notre liste
            Iterator<Element> i1 = listeDAS.iterator();

            ////TRAITEMENT POUR CHAQUE DAS
            String m[] = new String[50];
                m[0]="Marqueur de Sortie";
                m[1]="Nb Occurences";
                m[2]="Valeur Physique";
                m[3]="Résultat";
                m[4]="Valeur de Sortie";




                int s = methode.getValue();
                int n;
                for(n=5;n<5+s;n++)
                {

                    //System.out.println("Entrez le nom de la methode");
                    //Scanner methode = new Scanner(System.in);
                    //String name=methode.nextLine();
                    //m[n]=name;
                }
                int j;
                for(j=0;j<5+s;j++)
                {
                    System.out.println("Le nom de la methode "+j+" est :"+m[j]);
                }
            while(i1.hasNext())
            {
               Element courant = (Element)i1.next();
               //On affiche le nom de l’élément courant
               Str=courant.getAttributeValue("dasFullFileName").toString();
               System.out.println("Nom du DAS: " + Str);
               Nom_das.add(Str);

               ListeTRIAL=courant.getChildren("TRIAL");
               @SuppressWarnings("rawtypes")
            Iterator T1=ListeTRIAL.iterator();

               while(T1.hasNext())
               {
                 Element courant2 =(Element)T1.next();
                 Lien.add(courant2.getAttributeValue("xconvFullFileName").toString());
               }

               listeTASK=courant.getChildren("TASK");
               @SuppressWarnings("rawtypes")
            Iterator k1=listeTASK.iterator();


               while(k1.hasNext())
               {
                   Element courant2 =(Element)k1.next();
                   Str_bis=courant2.getAttributeValue("label").toString();
                   System.out.println(Str_bis);

                       listeOperation=courant2.getChildren("Operation");
                       @SuppressWarnings("rawtypes")
                    Iterator l1=listeOperation.iterator();

                        while(l1.hasNext())
                        {
                            Element courant3=(Element)l1.next();
                            listeArgument=courant3.getChildren("Argument");
                            @SuppressWarnings("rawtypes")
                            Iterator m1=listeArgument.iterator();

                            while(m1.hasNext())
                            {

                                Element courant4=(Element)m1.next();
                                int l;

                                for(l=0;l<5+s;l++)
                                {
                                    if(courant4.getAttributeValue("parameterName").compareTo(m[l])==0)
                                    {
                                        Nom_Variable1.add(courant4.getAttributeValue("argumentName"));
                                        double d = Double.parseDouble(courant4.getAttributeValue("instantValue"));
                                        DecimalFormat df = new DecimalFormat(".#");
                                        df.setMaximumFractionDigits(20);
                                        String sortie = df.format(d);
                                        long entier = (long)d;
                                        String hex = Long.toHexString(entier).toUpperCase();
                                        //hex.toUpperCase();
                                        Resultat_Variable1.add(sortie);
                                        Resultat_Variabledouble1.add(d);
                                        ResultatHexa_Variable1.add(hex);

                                    }
                                }
                            }
                        }
                    }
                    System.out.println("Fin lecture XML File");
               }
            }
        static void Xl() throws Throwable
         {

             try
             {

                 System.out.println("Saisi utilisateur ok");

        //CREATION DES FEUILLES NECESSAIRES A LA RECUPERATION DES DONNEES
                 String path_copy = excel.getText();
                 String path_save = sortie.getText();
                 Workbook copie = Workbook.getWorkbook(new File(path_copy));
                 WritableWorkbook sortie = Workbook.createWorkbook(new File(path_save),copie);
                 WritableFont bord=new WritableFont(WritableFont.ARIAL,11);
                 WritableCellFormat border=new WritableCellFormat(bord);


        //REMPLISSAGE DE LA PREMIERE FEUILLE AVEC LES DONNEES MESUREES
                 System.out.println("---"+Nom_Variable1.size()+"---");
                 for(int x=0;x<=Nom_Variable1.size()-1;x++)
                 {
                     Label Col0= new Label(0,x,Nom_Variable1.get(x),border);
                     sortie.getSheet(1).addCell(Col0);
                 }

                 for(int y=0;y<=Resultat_Variabledouble1.size()-1;y++)
                 {
                     Number Col1= new Number(1,y,Resultat_Variabledouble1.get(y),border);
                     sortie.getSheet(1).addCell((WritableCell) Col1);
                 }

                 for(int y=0;y<=ResultatHexa_Variable1.size()-1;y++)
                 {
                     Label Col2= new Label(2,y,ResultatHexa_Variable1.get(y),border);
                     sortie.getSheet(1).addCell(Col2);
                 }

                 System.out.println("Fin Copie Excel");
                 sortie.write();
                 sortie.close();

             }
             catch (RowsExceededException e1)
             {
             }
             catch(BiffException ex)
             {
             }
             catch (WriteException e1)
             {
             }
             catch (IOException e)
             {
             }
             finally
             {
                 System.out.println("Le fichier à été généré correctement.");
                 System.out.println ("Appuyez sur 'Entrée' pour terminer le programme");
                 System.exit(0);
            }

            System.exit(0);
         }

public HexaController(){

}

public void initialize(URL url,ResourceBundle rb){

    list.add(new String("OUI"));
    list.add(new String("NON"));
    hexa.setItems(list);
    nombre.add(new Integer(0));
    nombre.add(new Integer(1));
    nombre.add(new Integer(2));
    nombre.add(new Integer(3));
    nombre.add(new Integer(4));
    nombre.add(new Integer(5));
    methode.setItems(nombre);
}
}

And my fxml file :

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

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

<AnchorPane prefHeight="350.0" prefWidth="720.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ch.makery.adress.HexaController">
   <children>
      <GridPane layoutX="-120.0" layoutY="-234.0" prefHeight="0.0" prefWidth="80.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
        <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
            <RowConstraints maxHeight="132.0" minHeight="10.0" prefHeight="64.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="270.0" minHeight="0.0" prefHeight="52.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="546.0" minHeight="10.0" prefHeight="61.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="589.0" minHeight="10.0" prefHeight="76.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="620.0" minHeight="10.0" prefHeight="63.0" vgrow="SOMETIMES" />
            <RowConstraints maxHeight="641.0" minHeight="10.0" prefHeight="47.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Button mnemonicParsing="false" onAction="#dar" text="Parcourir" textAlignment="CENTER" GridPane.columnIndex="6" GridPane.halignment="CENTER" />
            <Button mnemonicParsing="false" onAction="#modele" text="Parcourir" textAlignment="CENTER" GridPane.columnIndex="6" GridPane.halignment="CENTER" GridPane.rowIndex="1" />
            <Button mnemonicParsing="false" onAction="#sortie" text="Enregistrer" textAlignment="CENTER" GridPane.columnIndex="6" GridPane.halignment="CENTER" GridPane.rowIndex="2" />
            <Button mnemonicParsing="false" onAction="#exe" text="Executer" GridPane.columnIndex="5" GridPane.halignment="CENTER" GridPane.rowIndex="5">
               <font>
                  <Font name="System Bold" size="12.0" />
               </font>
            </Button>
            <Button mnemonicParsing="false" onAction="#annuler" text="Annuler" GridPane.columnIndex="6" GridPane.halignment="CENTER" GridPane.rowIndex="5">
               <font>
                  <Font name="System Bold" size="12.0" />
               </font>
            </Button>
            <Label text="Choisissez un fichier &quot;.dar&quot;" GridPane.columnSpan="2" GridPane.halignment="LEFT">
               <GridPane.margin>
                  <Insets left="20.0" />
               </GridPane.margin>
            </Label>
            <Label text="Choisissez un modèle format &quot;.xls&quot;" GridPane.columnSpan="2" GridPane.halignment="LEFT" GridPane.rowIndex="1">
               <GridPane.margin>
                  <Insets left="20.0" />
               </GridPane.margin>
            </Label>
            <Label prefHeight="17.0" prefWidth="278.0" text="Choisissez la destination et le nom d'enregistrement" GridPane.columnSpan="3" GridPane.halignment="LEFT" GridPane.rowIndex="2">
               <GridPane.margin>
                  <Insets left="20.0" />
               </GridPane.margin>
            </Label>
            <Label text="Nombre de méthodes à ajouter" GridPane.columnSpan="2" GridPane.rowIndex="3">
               <padding>
                  <Insets left="20.0" />
               </padding>
            </Label>
            <Label text="Conversion hexadecimale" GridPane.columnSpan="2" GridPane.rowIndex="4">
               <padding>
                  <Insets left="20.0" />
               </padding>
            </Label>
            <TextField fx:id="entree" GridPane.columnIndex="3" GridPane.columnSpan="3" />
            <TextField fx:id="excel" GridPane.columnIndex="3" GridPane.columnSpan="3" GridPane.rowIndex="1" />
            <TextField fx:id="sortie" GridPane.columnIndex="3" GridPane.columnSpan="3" GridPane.rowIndex="2" />
            <ComboBox fx:id="methode" prefWidth="150.0" promptText="Choisir" GridPane.columnIndex="2" GridPane.rowIndex="3" />
            <ComboBox fx:id="hexa" prefWidth="150.0" promptText="Choisir" GridPane.columnIndex="2" GridPane.rowIndex="4" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

When I run this I have this error :

Exception in Application start method
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: javafx.fxml.LoadException: 
/C:/workspace/Application_traitement/bin/ch/makery/adress/PersonOverview.fxml

    at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
    at javafx.fxml.FXMLLoader.load(Unknown Source)
    at ch.makery.adress.MainApp.start(MainApp.java:16)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(Unknown Source)
    at com.sun.javafx.application.PlatformImpl.lambda$null$174(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(Unknown Source)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$149(Unknown Source)
    ... 1 more
Caused by: java.lang.NullPointerException
    at ch.makery.adress.HexaController.initialize(HexaController.java:338)
    ... 18 more

Could you help me with it ?
Thanks

David
  • 184
  • 2
  • 4
  • 20

2 Answers2

2

You get a NullPointerException in your initialize() method. That is because your ComboBox methode is declared static.

The FXML injection does not work with static variables in JavaFX8.

Refer to the answer by James_D to this question:

javafx 8 compatibility issues - FXML static fields

public class HexaController implements Initializable {

    private org.jdom2.Document document;

    private JFrame fileDialog;
    private Element racine;
    private String Nom_dar;
    private java.util.List<Element> listeDAS;
    private ArrayList<String> Nom_das = new ArrayList();
    private ArrayList<String> Nom_task = new ArrayList();
    private ArrayList<String> Nom_Variable1 = new ArrayList();
    private ArrayList<String> Resultat_Variable1 = new ArrayList();
    private ArrayList<Double> Resultat_Variabledouble1 = new ArrayList<Double>();
    private ArrayList<String> ResultatHexa_Variable1 = new ArrayList<String>();
    private ArrayList<String> Lien = new ArrayList();
    private java.util.List<Element> ListeTRIAL;
    private java.util.List<Element> listeTASK;
    private java.util.List<Element> listeOperation;
    private List listeOperation_delta;
    private java.util.List<Element> listeArgument;
    private List listeArgument_delta;

    @FXML
    private ComboBox<String> hexa;
    ObservableList<String> list = FXCollections.observableArrayList();
    @FXML
    private TextField entree;

    @FXML
    private TextField nomfichier;

    @FXML
    private TextField excel;

    @FXML
    private TextField sortie;

    @FXML
    private void dar(ActionEvent event) {
        FileDialog fd1 = new FileDialog(fileDialog, "Choisissez un fichier .dar", FileDialog.LOAD);
        fd1.setDirectory("C:\\");
        fd1.setVisible(true);
        String filename1 = fd1.getFile();
        String Directory1 = fd1.getDirectory();
        String path1 = Directory1 + filename1;
        entree.setText(path1);
        nomfichier.setText(filename1);
    }

    @FXML
    private void modele(ActionEvent event) {
        JFrame parentFrame = new JFrame();
        FileDialog filechooser = new FileDialog(parentFrame, "Choisir un modèle Excel à copier", FileDialog.LOAD);
        filechooser.setDirectory("C:\\");
        filechooser.setVisible(true);
        String directory_copy = filechooser.getDirectory();
        String name_copy = filechooser.getFile();
        String path_copy = (directory_copy + name_copy);
        excel.setText(path_copy);
    }

    @FXML
    private void sortie(ActionEvent event) {
        JFrame parentFrame2 = new JFrame();
        FileDialog filechooser2 = new FileDialog(parentFrame2, "Choisir une destination d'enregistrement", FileDialog.SAVE);
        filechooser2.setDirectory("C:\\");
        filechooser2.setVisible(true);
        String directory_save = filechooser2.getDirectory();
        String name_save = filechooser2.getFile();
        String path_save = (directory_save + name_save + ".xls");
        sortie.setText(path_save);
    }

    @FXML
    private void annuler(ActionEvent event) {
        System.exit(0);
    }

    @FXML
    private ComboBox<Integer> methode;
    ObservableList<Integer> nombre = FXCollections.observableArrayList();

    @FXML
    private void exe(ActionEvent event) throws Throwable {
        SAXBuilder sxb = new SAXBuilder();
        String filename1 = nomfichier.getText();
        if (filename1 == null) {
            System.out.println("Annulation");
            System.exit(0);
        } else {
            try {
                //On crée un nouveau document JDOM avec en argument le fichier XML
                //Le parsing est terminé 
                String path1 = entree.getText();
                document = sxb.build(new File(path1));
                //On initialise un nouvel élément racine avec l'élément racine du document.
                racine = document.getRootElement();
                System.out.println("Lecture du premier .dar");
            } catch (Exception e) {
                System.out.println("FATAL ERROR !");
                System.exit(0);
            }
        }
        afficheALL();

        Xl();
    }

    //RECUPERATION DES DONNEES DU FICHIER DAR
    private void afficheALL() {
        //Variables Locales
        String Str;
        String Str_bis;
        Nom_dar = racine.getAttributeValue("label");

        System.out.println("Nom du fichier dar : " + Nom_dar + "\n");

        listeDAS = racine.getChildren("DAS");
        //On crée un Iterator sur notre liste
        Iterator<Element> i1 = listeDAS.iterator();

        ////TRAITEMENT POUR CHAQUE DAS
        String m[] = new String[50];
        m[0] = "Marqueur de Sortie";
        m[1] = "Nb Occurences";
        m[2] = "Valeur Physique";
        m[3] = "Résultat";
        m[4] = "Valeur de Sortie";

        int s = methode.getValue();
        int n;
        for (n = 5; n < 5 + s; n++) {

            //System.out.println("Entrez le nom de la methode");
            //Scanner methode = new Scanner(System.in);
            //String name=methode.nextLine();
            //m[n]=name;
        }
        int j;
        for (j = 0; j < 5 + s; j++) {
            System.out.println("Le nom de la methode " + j + " est :" + m[j]);
        }
        while (i1.hasNext()) {
            Element courant = (Element) i1.next();
            //On affiche le nom de l’élément courant
            Str = courant.getAttributeValue("dasFullFileName").toString();
            System.out.println("Nom du DAS: " + Str);
            Nom_das.add(Str);

            ListeTRIAL = courant.getChildren("TRIAL");
            @SuppressWarnings("rawtypes")
            Iterator T1 = ListeTRIAL.iterator();

            while (T1.hasNext()) {
                Element courant2 = (Element) T1.next();
                Lien.add(courant2.getAttributeValue("xconvFullFileName").toString());
            }

            listeTASK = courant.getChildren("TASK");
            @SuppressWarnings("rawtypes")
            Iterator k1 = listeTASK.iterator();

            while (k1.hasNext()) {
                Element courant2 = (Element) k1.next();
                Str_bis = courant2.getAttributeValue("label").toString();
                System.out.println(Str_bis);

                listeOperation = courant2.getChildren("Operation");
                @SuppressWarnings("rawtypes")
                Iterator l1 = listeOperation.iterator();

                while (l1.hasNext()) {
                    Element courant3 = (Element) l1.next();
                    listeArgument = courant3.getChildren("Argument");
                    @SuppressWarnings("rawtypes")
                    Iterator m1 = listeArgument.iterator();

                    while (m1.hasNext()) {

                        Element courant4 = (Element) m1.next();
                        int l;

                        for (l = 0; l < 5 + s; l++) {
                            if (courant4.getAttributeValue("parameterName").compareTo(m[l]) == 0) {
                                Nom_Variable1.add(courant4.getAttributeValue("argumentName"));
                                double d = Double.parseDouble(courant4.getAttributeValue("instantValue"));
                                DecimalFormat df = new DecimalFormat(".#");
                                df.setMaximumFractionDigits(20);
                                String sortie = df.format(d);
                                long entier = (long) d;
                                String hex = Long.toHexString(entier).toUpperCase();
                                //hex.toUpperCase();
                                Resultat_Variable1.add(sortie);
                                Resultat_Variabledouble1.add(d);
                                ResultatHexa_Variable1.add(hex);

                            }
                        }
                    }
                }
            }
            System.out.println("Fin lecture XML File");
        }
    }

    private void Xl() throws Throwable {

        try {

            System.out.println("Saisi utilisateur ok");

            //CREATION DES FEUILLES NECESSAIRES A LA RECUPERATION DES DONNEES
            String path_copy = excel.getText();
            String path_save = sortie.getText();
            Workbook copie = Workbook.getWorkbook(new File(path_copy));
            WritableWorkbook sortie = Workbook.createWorkbook(new File(path_save), copie);
            WritableFont bord = new WritableFont(WritableFont.ARIAL, 11);
            WritableCellFormat border = new WritableCellFormat(bord);

            //REMPLISSAGE DE LA PREMIERE FEUILLE AVEC LES DONNEES MESUREES
            System.out.println("---" + Nom_Variable1.size() + "---");
            for (int x = 0; x <= Nom_Variable1.size() - 1; x++) {
                Label Col0 = new Label(0, x, Nom_Variable1.get(x), border);
                sortie.getSheet(1).addCell(Col0);
            }

            for (int y = 0; y <= Resultat_Variabledouble1.size() - 1; y++) {
                Number Col1 = new Number(1, y, Resultat_Variabledouble1.get(y), border);
                sortie.getSheet(1).addCell((WritableCell) Col1);
            }

            for (int y = 0; y <= ResultatHexa_Variable1.size() - 1; y++) {
                Label Col2 = new Label(2, y, ResultatHexa_Variable1.get(y), border);
                sortie.getSheet(1).addCell(Col2);
            }

            System.out.println("Fin Copie Excel");
            sortie.write();
            sortie.close();

        } catch (RowsExceededException e1) {
        } catch (BiffException ex) {
        } catch (WriteException e1) {
        } catch (IOException e) {
        } finally {
            System.out.println("Le fichier à été généré correctement.");
            System.out.println("Appuyez sur 'Entrée' pour terminer le programme");
            System.exit(0);
        }

        System.exit(0);
    }

    public HexaController() {

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        list.add(new String("OUI"));
        list.add(new String("NON"));
        hexa.setItems(list);
        nombre.add(new Integer(0));
        nombre.add(new Integer(1));
        nombre.add(new Integer(2));
        nombre.add(new Integer(3));
        nombre.add(new Integer(4));
        nombre.add(new Integer(5));
        methode.setItems(nombre);
    }

}
Community
  • 1
  • 1
Moh-Aw
  • 2,976
  • 2
  • 30
  • 44
  • If I delete the static declaration it returns me an errors and can't run the app. How could I get the value of my TextField and Combobox as a Variable that I can use ? – David Sep 02 '15 at 09:06
  • No I can't compile it with errors it says Cannot make a static reference to a non-static field – David Sep 02 '15 at 09:14
  • You're better off removing the text field and combo box value setting outside of your initialise method. Code to come shortly. – Draken Sep 02 '15 at 09:15
  • What do you mean by removing Textfield ? Because I need them ! What I need is to get the content of the Textfield and put it in a global variable that I can use for an event for exemple. – David Sep 02 '15 at 09:18
  • You're doing it at the wrong, point, hang on a second, I'll add my code in. You're trying to access them when they haven't been created yet and JavaFx then falls over – Draken Sep 02 '15 at 09:19
  • @Moh-Aw what did you change except the static identifiers on the combobox Method ? Because just doing it do not work for me – David Sep 02 '15 at 09:23
  • you need to remove the static identifier of the methode `afficheALL()`, too. That should make it work. I removed all static identifiers and replaced them with `private` as I cannot see, by the code given, why they should be static. – Moh-Aw Sep 02 '15 at 09:28
  • It works by changing all the static by private ! Thanks – David Sep 02 '15 at 09:35
0

Try this in your MainApp class:

@Override
public void start(Stage stage) throws Exception {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("PersonOverview.fxml"));
    Parent parent = (Parent)loader.load();
    Scene scene = new Scene(parent);
    stage.setTitle("Appication Extraction et remplissage Excel");
    stage.setScene(scene);
    stage.show();
    ((HexaController)loader.getController()).initForm();
}

Then in your controller have a method called initForm() that does this:

public void initForm(){
    list.add(new String("OUI"));
    list.add(new String("NON"));
    hexa.setItems(list);
    nombre.add(new Integer(0));
    nombre.add(new Integer(1));
    nombre.add(new Integer(2));
    nombre.add(new Integer(3));
    nombre.add(new Integer(4));
    nombre.add(new Integer(5));
    methode.setItems(nombre);
}

Also delete your static declarations in your controller, they aren't needed. You can call the method what ever you fancy, just make sure you use the method after you call stage.show();

Draken
  • 3,134
  • 13
  • 34
  • 54
  • Should I remove the implements initialize ? – David Sep 02 '15 at 09:32
  • It's not required for JavaFX. Is there another reason why you are using it? You should be safe to remove it if you only used it to call that initialise method – Draken Sep 02 '15 at 09:35
  • Did not work without brings me errors when running it. But no matter the replacement of all the static by private make it works. Thanks – David Sep 02 '15 at 09:36