私はGUIにシステムメッセージを投稿するためのインターフェースを持っているが、私はやっている方法は、それはインターフェースのメソッド(ではない、それを実装して1)を使用しようとしたクラスにNULLポインタ例外が発生しJavaFXコントローラにインターフェイスを実装するにはどうしたらいいですか?
public interface SystemMessage {
void postMessage(String outText);
}
私は(私はまだスレッドしていないですいくつかの背景の仕事をするために、いくつかのヘルパークラスを呼び出して、私のコントローラでは、私は、このインタフェースを実装し、Main.javaからGUI
public class MainController implements SystemMessage {
@FXML
public DialogPane systemMessage;
@Override
public void postMessage(String outText) {
systemMessage.setContentText(outText);
}
}
にメッセージを投稿するためにそれを使用するようにすべてがある言い訳メインスレッド上)
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("fxml/entry.fxml"));
Parent root = loader.load();
this.mainController = loader.getController();
primaryStage.setTitle("ASI Sync!");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
initializeSync();
}
private void initializeSync() {
//Each of these perform several function on initialization
Identity identity = new Identity();
String[] args = null;
Api api = new Api();
api.Get(args);
SqLite db = new SqLite();
}
したがって、私のアイデンティティクラスでは、初期化時にメッセージを投稿するためにインターフェイスを使用しようとしましたが、NULL POINTER EXCEPTIONが返されます。
public class Identity {
private String machineId = null;
public String statusText = null;
SystemMessage systemMessage;// Trying to instantiate the system message interface??
public Identity(){
systemMessage.postMessage("Checking Machine Identity");
//..//
}
//..//
}
回答ありがとうございます。私は理解しようとしています。したがって、コントローラを接続しているfxmlloaderを参照し、Identityクラスに渡して、インターフェイスの使用場所や使用方法を知る必要があります。 – silversunhunter
また、私の編集を参照してください。メインファイルには、私がstart()で設定したmainControllerオブジェクトがあります。私は主にこれを使用して、インスタンス化される各クラスに渡すことができますか? – silversunhunter
私はそれを理解しました...私はあなたのコードを私のstart()メソッドでユーザに渡してから、( "reference"?)を他のクラスに渡すことができました!!!ありがとう!!! – silversunhunter