当我尝试运行我的javafx应用程序时,在初始化时出错

时间:2013-07-01 01:57:59

标签: java javafx

我正在测试 JavaFX 应用程序,我现在收到的错误现在对 JavaFX 了解不多,还在学习它。我认为这是因为label.setText(numbers[0]);,如果我做@FXML Label lebal = new Label();,它就不会改变行动。感谢。

我的gui班

package fx;

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

public class GUI extends Application {


@Override
public void start(Stage primaryStage) throws Exception {

    final Parent root = FXMLLoader.load(getClass().getResource("test.fxml")); //error (GUI.java:15)
    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(new Scene(root, 257, 474));
    primaryStage.setResizable(false);
    primaryStage.show();
    ;

}

public static void main(String[] args) {
    GUI.launch(GUI.class, args);
}
}

我的控制器类:

package fx;

import java.net.URL;
import java.util.Arrays;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;

import com.sun.javafx.collections.ObservableListWrapper;

public class myCon implements Initializable {

@FXML Button button;
@FXML ComboBox<String> combobox;
@FXML Label label;


String[] order = {"First", "second"}; 
String[] numbers = {"one", "two"}; 


@Override
public void initialize(URL location, ResourceBundle resources) {
    combobox.setItems(new ObservableListWrapper<>(Arrays.asList(order)));
    combobox.getSelectionModel().selectFirst();
    label.setText(numbers[0]);//error here (myCon.java:32)
    System.out.println(label.getText());
    button.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
label.setText(numbers[combobox.getSelectionModel().getSelectedIndex()]);
            System.out.println(label.getText());
        }
    });
}

}

我得到的错误

Jul 01, 2013 11:45:24 AM javafx.fxml.FXMLLoader logException
SEVERE: java.lang.NullPointerException
/C:/Users/user/Desktop/New%20folder%20(2)/Project/bin/fx/test.fxml:-1
at fx.myCon.initialize(myCon.java:32)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2047)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:1900)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2486)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2478)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2472)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2466)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2461)
at fx.GUI.start(GUI.java:15)
at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:315)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:174)
at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:141)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$2$1.run(WinApplication.java:62)
at java.lang.Thread.run(Unknown Source)

Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start          method
at      com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:399)
at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at fx.myCon.initialize(myCon.java:32)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2047)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:1900)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2486)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2478)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2472)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2466)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2461)
at fx.GUI.start(GUI.java:15)
at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:315)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:174)
at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:141)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
at com.sun.glass.ui.win.WinApplication$2$1.run(WinApplication.java:62)
... 1 more

1 个答案:

答案 0 :(得分:0)

你的领域

Label label;

未初始化 - 也就是说,它仍为空。

您的注入注释@FXML (see tutorial)显然无法加载实例。