私は、テーブルのクラス内のエントリのさまざまな属性を表示し、セカンダリ入力ウィンドウから新しいエントリを追加できるようにする単純なオブジェクトデータベースアプリケーションを開発中です。JavaFX FXMLアプリの奇妙な可視性の問題
メイン:二次のいずれかのウィンドウのための
public class Main extends Application {
Stage theStage;
Scene mainWindowController;
@Override
public void start(Stage primaryStage) throws Exception{
theStage = primaryStage;
Parent root = FXMLLoader.load(getClass().getResource("MainWindow.fxml"));
primaryStage.setTitle("Steam Database");
mainWindowController = new Scene(root, 800, 550);
primaryStage.setScene(mainWindowController);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
コントローラ:
import static sample.MainWindowController.*;
public class CreateDeveloperWindowController {
/*
*/
@FXML
private TextField newDeveloperNameTextField;
@FXML
private TextField newDeveloperPassTextField;
private void handleCreateDeveloperButton() {
String proposedNewDevName = newDeveloperNameTextField.getText();
String proposedNewDevPass = newDeveloperPassTextField.getText();
if (proposedNewDevName.equals("") || proposedNewDevPass.equals("")) {
mainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
} else {
allDevelopers.add(new Developer(proposedNewDevName, proposedNewDevPass));
}
}
/*
*/
}
問題は、私は取得していますライン
mainWindowController.textMessageDisplay.setText("Name and password must not be empty!");
で、コントローラであります「シンボルを解決できません」というエラーが表示されますが、理由を識別できません。 1つの解決策は、「メイン」を追加することです。その前に変数static
を宣言しますが、それは追加したい他の機能に問題を引き起こします。だから私の質問は:
なぜこれも表示されますか?
mainWindowController
変数はMain
クラス内で宣言されているので、アプリケーションのどこからでも見ることができます。どうすれば解決できますか。その行をどのように動かすのですか?
なので、エラーが発生します。 –
しかし、CreateDeveloperWindowControllerはMainクラスでそれを見るべきではありませんか?私がそれをインポートしても、静的コンテキストから参照することはできません "静的ではない変数を与える"エラーは、静的な変数を宣言することによって解決することができます。私が追加しようとしている他のものと同じように静的なので、 – Sargon1
* "CreateDeveloperWindowControllerはメインクラスでそれを参照してはいけませんか?"それは単にJava(あるいは実際に私が知っている他の言語)がどのように動作するかではありません。 –