JavaFx Program抛出java.lang.reflect.InvocationTargetException

时间:2016-04-12 16:25:06

标签: java eclipse javafx

这是我在这里的第一个问题,如果出现问题,请不要生我的气。我目前正在JavaFx的帮助下编写一个类似Java的闲置游戏。 这里的代码是用eclipse mars和JavaFx编写的。 Eclipse向我展示代码是正确的,但是当我想启动程序时,它会抛出这个错误消息块:

public class Main extends Application{

private static final Color color = Color.web("#464646");
Button button3 = new Button("D");
DropShadow shadow = new DropShadow();
Label label = new Label();

public static void main(String[] args) throws Exception {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception{
    Scene scene = new Scene(new Group());
    primaryStage.setTitle("Button Sample");
    primaryStage.setWidth(300);
    primaryStage.setHeight(190);

    label.setFont(Font.font("Times New Roman", 22));
    label.setTextFill(color);

    Image imageDecline = new Image(getClass().getResourceAsStream("../not.png"));
    Image imageAccept = new Image(getClass().getResourceAsStream("../ok.png"));

    VBox vbox = new VBox();
    vbox.setLayoutX(20);
    vbox.setLayoutY(20);
    HBox hbox1 = new HBox();
    HBox hbox2 = new HBox();

    Button button1 = new Button("Accept");
    button1.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");
    button1.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            label.setText("Accepted");
        }
    });

    Button button2 = new Button("Accept");
    button2.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            label.setText("Accepted");
        }
    });

    button3.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            label.setText("Declined");
        }
    });

    button3.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent e) {
            button3.setEffect(shadow);
        }
    });

    button3.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent e) {
            button3.setEffect(null);
        }
    });

    hbox1.getChildren().add(button2);
    hbox1.getChildren().add(button3);
    hbox1.getChildren().add(label);
    hbox1.setSpacing(10);
    hbox1.setAlignment(Pos.BOTTOM_CENTER);

    Button button4 = new Button();
    button4.setGraphic(new ImageView(imageAccept));
    button4.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            label.setText("Accepted");
        }
    });

    Button button5 = new Button();
    button5.setGraphic(new ImageView(imageDecline));
    button5.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent e) {
            label.setText("Declined");
        }
    });

    hbox2.getChildren().add(button4);
    hbox2.getChildren().add(button5);
    hbox2.setSpacing(25);

    vbox.getChildren().add(button1);
    vbox.getChildren().add(hbox1);
    vbox.getChildren().add(hbox2);
    vbox.setSpacing(10);
    ((Group) scene.getRoot()).getChildren().add(vbox);

    primaryStage.setScene(scene);
    primaryStage.show();
}}

我希望这里的任何人都有这个问题的提示或解决方案:)对你来说非常好。

最好的问候, 麦克

1 个答案:

答案 0 :(得分:1)

我认为您的问题与用于创建Image对象的输入流有关:

... = new Image(getClass().getResourceAsStream("../not.png"));

当我在Eclipse中启动应用程序时,我也得到一个InvocationTargetException。它是由NullPointerException引起的,因为无法找到PNG文件。

尝试在不创建Image对象的情况下启动应用程序,看看是否仍然有例外。