2017-12-27 8 views
0

내가 TextField (miniFilePath)에 대한 setText 때 null 예외를 throw하고 싶습니다 내 코드에 문제가 무엇인지 모르겠습니까? 내가이 클래스의 인스턴스가 호출 될 때 다른 창에서 하나 개의 버튼을 클릭하고 윈도우가 만들어 질 때내가 setText 내 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(); 
    } 

} 

이 클래스는 제 2의 창으로 작동합니다. 나는 사용자가 텍스트 필드에 텍스트를 설정 한 후에이 창을 열 때마다 텍스트 필드가 이전에 설정된 문자열로 설정되기를 원합니다.

+0

필드가 인스턴스가 아닙니다. – Stultuske

답변

1
디스플레이하기 전에 초기화() 메서드를 재정의

@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