Dúvidas sobre primeiro projeto em JavaFX

Java

10/09/2016

Bom dia galera,

Estou começando os estudos em JavaFX utilizando a ide Netbeans + SceneBuilder em conjunto e logo no primeiro projeto estou enfrentando um erro que não consigo decifrar. Criei um "Novo Projeto >>> Aplicação FXML" e utilizei o SceneBuilder apenas para dar nomes (id's) aos dois componentes contidos na tela, um botão e um label.

Porem ao executar a aplicação tem sido exibido o seguinte erro:


Exception in Application start method
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
	at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:182)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException: Location is required.
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3207)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
	at teste.Teste.start(Teste.java:22)
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(LauncherImpl.java:863)
	at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(PlatformImpl.java:326)
	at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191)
	... 1 more
Exception running application teste.Teste
C:\\Users\\ALLINONE\\Documents\\NetBeansProjects\\Teste\\nbproject\\build-impl.xml:1051: The following error occurred while executing this line:
C:\\Users\\ALLINONE\\Documents\\NetBeansProjects\\Teste\\nbproject\\build-impl.xml:805: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 7 segundos)




O meu projeto tem apenas a classe Principal chamada Teste com o seguinte código:

package teste;

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

/**
 *
 * @author ALLINONE
 */
public class Teste extends Application {
    
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
        
      //  Scene scene = new Scene(root);
        
        stage.setScene(new Scene(root));
        stage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
}



E a classe Control:


package teste;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;

/**
 *
 * @author ALLINONE
 */
public class FXMLDocumentController implements Initializable {
    
    @FXML
    private Button btClick;
    @FXML
    private Label lbTexto;
    
    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        lbTexto.setText("Hello World!");
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
       
        
    }    

    @FXML
    private void handleButtonAction(MouseEvent event) {
        
       System.out.println("You clicked me!");
       lbTexto.setText("Hello World!"); 
    }
    
}



E o arquivo fxml


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

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.60" fx:controller="teste.FXMLDocumentController">
    <children>
        <Button fx:id="btClick" layoutX="126" layoutY="90" onAction="#handleButtonAction" onMouseClicked="#handleButtonAction" text="Click Me!" />
        <Label fx:id="lbTexto" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
    </children>
</AnchorPane>


Desde já agradeço por qualquer ajuda.
Bruno Silva

Bruno Silva

Curtidas 0

Respostas

Rene Tsugawa

Rene Tsugawa

10/09/2016

Bom dia.

Testei o seu projeto e não apresentou erro, funcionou corretamente.

Mas para tente remover a id do AnchorPane, pois o mesmo não é utilizado no Controller e isso pode gerar erros.
GOSTEI 0
Bruno Silva

Bruno Silva

10/09/2016

Mesmo tirando o id do AnchorPane continua com o mesmo erro Rene, quando ele começa a compilar está dando essa mensagem,acabei me esquecendo de colocar antes da Exception que ocorre.

ant -f C:\\\\Users\\\\ALLINONE\\\\Documents\\\\NetBeansProjects\\\\Teste -Djavac.includes=teste/Teste.java -Dnb.internal.action.name=run.single -Drun.class=teste.Teste run-single
init:
Deleting: C:\\Users\\ALLINONE\\Documents\\NetBeansProjects\\Teste\\build\\built-jar.properties
deps-jar:
Updating property file: C:\\Users\\ALLINONE\\Documents\\NetBeansProjects\\Teste\\build\\built-jar.properties
Compiling 1 source file to C:\\Users\\ALLINONE\\Documents\\NetBeansProjects\\Teste\\build\\classes
compile-single:
run-single:


Não sei se tem alguma coisa que poderia influenciar também em termos de configuração, pois nunca havia mexido com JavaFx, mas eu fiz uma alteração na seguinte configuração do NetBeans, fui em "Ferramentas >>> Opções >>> Java >>> JavaFX" e apontei o Home Page do Scene Builder para a minha area de trabalho do windows, não sei se isso poderia estar influenciando ou impedindo que o projeto rode...

Desde já agradeço por qualquer ajuda.
GOSTEI 0
POSTAR