2017-12-27 7 views
0

私はTextField(miniFilePath)のsetTextをnull例外をスローしたいとき私は自分のコードに何が間違っているのか分かりませんか?私は、このクラスの1つのインスタンスが呼び出され、別のウィンドウに一つのボタンをクリックすると、ウィンドウが作られたとき私は私のtextFieldのためにテキストを設定したいときnullポインタ例外をスローします

public class SettingsController { 

@FXML 
private TextField miniFilePath; 

@FXML 
private Button settingExitBtn; 

public static String miniFilterPath = new String() ; 
public static String reportDirectoryPath = new String(); 
Stage settings = new Stage(); 



public void display(){ 

    try { 
     FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Settings.fxml")); 

     Parent root = (Parent) fxmlLoader.load(); 
     //settings = new Stage(); 
     Stage settings = new Stage(); 
     settings.setScene(new Scene(root)); 
     settings.initModality(Modality.APPLICATION_MODAL); 
     settings.setResizable(false); 
     settings.setTitle("settings"); 

     if (!miniFilterPath.isEmpty()) 
      miniFilePath.setText(miniFilterPath); 

     settings.show(); 

    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

} 

このクラスは、私の第二のウィンドウとして動作します。 私は、ユーザーがこのウィンドウを開こうとするたびにテキストフィールドのテキストを設定した後に、そのテキストフィールドが以前に設定された文字列に設定されていることを望みます。

+0

あなたのフィールドはインスタンス化されていませんed – Stultuske

答えて

1
お使いのディスプレイの前のinitialize()メソッドをオーバーライドします

@FXML 
public void initialize() { 
    refresh(); 
} 

public void refresh() { 
    if (!(miniFilterPath == null | miniFilterPath.trim().equals(""))) 
     miniFilePath.setText(miniFilterPath); 
} 

はまた、私はあなたが以下でごFXMLファイル内のテキストフィールドを持っていると仮定()メソッド:

fx:id="miniFilePath" 

ますもしドンそれでは、display()メソッドのテキストフィールドを次のように初期化してください:

miniFilePath = new TextField(); 
+0

彼はすでにminiFilterPathの値(nullかどうか)をチェックしています。その後、おそらく別の.fxmlファイルで定義されていない、または.javaファイルでインスタンス化されていないminiFilePathでsetTextを呼び出そうとします。どんな考えもいいけど、私は何かが恋しくなるかもしれない。 @GhostCat – gokcand

+0

ありがとうございます...私のために最初の作品... – ATA

関連する問題