2017-10-07 11 views
0

午前/午後JavaFXの - にjava.lang.reflect.InvocationTargetException

Main.java

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class Main extends Application{ 
    public static void main(String[] args) { 

     launch(args); 
    } 

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


     Parent root = FXMLLoader.load(getClass().getResource("Splash.fxml")); 
     Scene scene = new Scene(root); 
     primaryStage.setTitle("My Title"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
} 

Splash.fxml

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

<?import com.gluonhq.charm.glisten.control.TextField?> 
<?import javafx.geometry.Insets?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.image.Image?> 
<?import javafx.scene.image.ImageView?> 
<?import javafx.scene.layout.BorderPane?> 
<?import javafx.scene.layout.Pane?> 
<?import javafx.scene.layout.VBox?> 

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/9" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller"> 
    <top> 
     <ImageView fitHeight="96.0" fitWidth="600.0" pickOnBounds="true" preserveRatio="true" BorderPane.alignment="CENTER"> 
     <image> 
      <Image url="@Hangman.png" /> 
     </image> 
     <BorderPane.margin> 
      <Insets left="20.0" top="50.0" /> 
     </BorderPane.margin> 
     </ImageView> 
    </top> 
    <center> 
     <VBox alignment="CENTER" spacing="15.0"> 
     <children> 
      <TextField maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" promptText="Username" /> 
      <TextField layoutX="236.0" layoutY="10.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" promptText="Password" /> 
      <Button mnemonicParsing="false" onAction="#testClick" text="Enter" /> 
     </children> 
     <BorderPane.margin> 
      <Insets top="20.0" /> 
     </BorderPane.margin> 
     </VBox> 
    </center> 
    <bottom> 
     <Pane BorderPane.alignment="CENTER"> 
     <children> 
      <Label alignment="CENTER" contentDisplay="CENTER" layoutX="279.0" text="Sign Up"> 
       <padding> 
        <Insets bottom="20.0" /> 
       </padding> 
      </Label> 
     </children> 
     </Pane> 
    </bottom> 
</BorderPane> 

コントローラ

import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.scene.control.Label; 
import java.util.Random; 

public class Controller { 

    public void testClick() { 

     System.out.println("test"); 
    } 



} 

アイムエラーを取得する "java .lang.reflect.InvocationTargetException "を返します。フォーラムを通した時間の浪費。 FXMLコードを作成しました。私はシーンビルダを使用し、すべてのものが正常に動作するようにしました。問題はどこから来ていますか?それをどうやって止めることができますか?

ありがとうございました!

+1

あなたが最初の場所で例外を投稿する必要があります。しかし、あなたの問題はGluonの 'TextField'を使うことから来ていると思いますか? –

+0

それは正しいと思われる!それを取り出してロードしましたが、なぜこのエラーが起こっていますか? – BenjaminBarnes

+0

誤った 'TextField'を追加しているため:Gluonモバイルプロジェクトを作成していない限り、JavaFXデスクトップアプリケーションにはGluon Mobileライブラリが含まれていません。 –

答えて

1

あなたが持っているあなたのFXMLファイルでインポートのリストをチェックした場合:あなたはグルーオンMobileプロジェクトを作成している場合を除き、あなたのJavaFXアプリケーションは、グルーオンモバイルライブラリは含まれません、それは失敗します

ので
<?import com.gluonhq.charm.glisten.control.TextField?> 
<?import javafx.geometry.Insets?> 
... 

コントロールcom.gluonhq.charm.glisten.control.TextFieldを見つけてInvocationTargetExceptionを投げます。

あなただけの[コントロール]タブから、組み込みのコントロールのJavaFXを使用する必要があります。

関連する問題