Come da titolo sto iniziando a capire il funzionamento delle GUI fatte con JavaFX e l'utilizzo di FXML.
Per prima cosa ho seguito questa guida ( http://docs.oracle.com/javafx/sceneb...th-eclipse.htm ) che mi ha permesso di scaricare l'estensione e(fx)clipse e Scene Builder.
Ho creato prima un JavaFXProject, successivamente al suo interno un FXML Document e poi tramite Scene Builder la mia interfaccia grafica.
Così è organizzato il progetto:
Seguendo il manuale, all'interno della classe Main ho scritto questo:
Ho commentato il codice che era già scritto perchè non devo visualizzare il BorderPane di default ma la mia interfaccia.codice:package application; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; public class Main extends Application { public void start(Stage stage) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("TestFXML.fxml")); stage.setScene(new Scene(root)); stage.show(); } /* @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); Scene scene = new Scene(root,400,400); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } */ public static void main(String[] args) { launch(args); } }
A questo punto ho provato a eseguire come Java Application il file Main.java ma mi dice che c'è un'eccezione nel main:
codice:Exception in Application start method 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 com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source) at com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source) 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$147(Unknown Source) at com.sun.javafx.application.LauncherImpl$$Lambda$48/1732398722.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException: Location is required. 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 application.Main.start(Main.java:16) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$153(Unknown Source) at com.sun.javafx.application.LauncherImpl$$Lambda$51/1285177093.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$45/1051754451.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$null$164(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$47/483857893.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$46/1775282465.run(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$141(Unknown Source) at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source) ... 1 more Exception running application application.Main
Se non ho capito male non riesce a caricare il file fxml da me creato che contiene l'interfaccia, eppure si trova nella stessa cartella di progetto.
Mi aiutate a capire?


Rispondi quotando