2016-07-23 8 views
0

J'ai construit une interface graphique en utilisant le générateur de scènes, via eclipse. J'essaie d'exécuter la classe MainApp pour voir l'interface graphique en éclipse, tout compile, il n'y a pas de messages d'erreur dans la console, un processus java s'ouvre mais rien ne se passe réellement et aucune fenêtre n'est créée à l'écran.JavaFX fxml ne lance pas/ne fait rien

J'ai visité le site d'Oracle et essayé de modifier le code mais rien ne fonctionne. J'ai java mis à jour, javafx réinstallé etc. dans éclipse. J'ai également essayé le programme à travers les netbeans dans le même sens.

Fonctionnant sur Mac OS X

package main; 

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 

public class MainApp extends Application { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    Application.launch(MainApp.class, (java.lang.String[])null); 
} 

@Override 
public void start(Stage primaryStage) { 
    try { 
     Parent root = FXMLLoader.load(getClass().getResource("GUI.fxml")); 

     Scene scene = new Scene(root); 

     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } catch (Exception ex) { 
     Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
`package main; 

La classe contrôleur

public class Controller implements Initializable { 

@FXML 
Button checkButton; 
@FXML 
Button callButton; 
@FXML 
Button raiseButton; 
@FXML 
Button foldButton; 


public void buttonClicked() { 
    System.out.println("Button was clicked"); 
} 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    // TODO Auto-generated method stub 

} 
} 
} 

Le fichier FXML

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


<?import javafx.scene.chart.CategoryAxis?> 
<?import javafx.scene.chart.LineChart?> 
<?import javafx.scene.chart.NumberAxis?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.ButtonBar?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.control.SplitPane?> 
<?import javafx.scene.control.TextArea?> 
<?import javafx.scene.image.Image?> 
<?import javafx.scene.image.ImageView?> 
<?import javafx.scene.layout.AnchorPane?> 

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="500.0" prefWidth="800.0" style="-fx-background-color: #FFFFFF;" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="main.Controller"> 
    <children> 
     <SplitPane dividerPositions="0.29949874686716793" layoutX="123.0" layoutY="67.0" prefHeight="433.0" prefWidth="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="67.0"> 
     <items> 
      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> 
       <children> 
        <LineChart layoutY="206.0" prefHeight="215.0" prefWidth="235.0"> 
        <xAxis> 
         <CategoryAxis side="BOTTOM" /> 
        </xAxis> 
        <yAxis> 
         <NumberAxis side="LEFT" /> 
        </yAxis> 
        </LineChart> 
        <LineChart prefHeight="215.0" prefWidth="235.0"> 
        <xAxis> 
         <CategoryAxis side="BOTTOM" /> 
        </xAxis> 
        <yAxis> 
         <NumberAxis side="LEFT" /> 
        </yAxis> 
        </LineChart> 
       </children> 
      </AnchorPane> 
      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0"> 
       <children> 
        <SplitPane dividerPositions="0.6783216783216783" orientation="VERTICAL" prefHeight="498.0" prefWidth="555.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> 
        <items> 
         <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" /> 
         <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="127.0" prefWidth="553.0"> 
          <children> 
           <TextArea disable="true" layoutX="9.0" layoutY="23.0" prefHeight="106.0" prefWidth="536.0" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="9.0" AnchorPane.rightAnchor="8.0" AnchorPane.topAnchor="23.0" /> 
           <Label layoutX="14.0" layoutY="6.0" text="Live guidance:" /> 
          </children> 
         </AnchorPane> 
        </items> 
        </SplitPane> 
       </children> 
      </AnchorPane> 
     </items> 
     </SplitPane> 
     <ImageView fitHeight="62.0" fitWidth="200.0" layoutX="14.0" layoutY="5.0"> 
     <image> 
      <Image url="@../../../../../Desktop/Dissertation%20files/logo.jpg" /> 
     </image> 
     </ImageView> 
     <ButtonBar layoutX="456.0" layoutY="16.0" prefHeight="40.0" prefWidth="200.0"> 
     <buttons> 
      <Button fx:id="checkButton" mnemonicParsing="false" onAction="#buttonClicked" onMouseClicked="#buttonClicked" style="-fx-background-radius: 10;" text="Check" /> 
      <Button fx:id="callButon" mnemonicParsing="false" onAction="#buttonClicked" onMouseClicked="#buttonClicked" style="-fx-background-radius: 10;" text="Call" /> 
      <Button fx:id="raiseButton" mnemonicParsing="false" onAction="#buttonClicked" onMouseClicked="#buttonClicked" prefHeight="27.0" prefWidth="81.0" style="-fx-background-radius: 10;" text="Raise" /> 
      <Button fx:id="foldButton" mnemonicParsing="false" onAction="#buttonClicked" onMouseClicked="#buttonClicked" style="-fx-background-radius: 10;" text="Fold" /> 
     </buttons> 
     </ButtonBar> 
    </children> 
</AnchorPane> 

Toutes mes excuses si je manque quelque chose de simple.

+0

Il fonctionne bien pour moi . (Je suppose que le '}' manquant dans 'MainApp' et l'extra dans' Controller' sont simplement des erreurs de copier/coller.) –

+0

Où se trouve votre fichier GUI.fxml? Dans le dossier ou le paquet, ou dans la racine de dir? – NwDev

+0

@James_D oui excuses, la première fois vraiment en utilisant stackoverflow donc mon mauvais. – OliverJohnson

Répondre

0

Si les classes et le fichier FXML est en même paquet puis la ligne de charge doit être comme ça

Parent root = FXMLLoader.load(getClass().getResource("/package_name/fxml2GUI.fxml")); 

Mettez le nom du package de votre source dans le lieu de « packagename »