JavaFX FXML应用程序中的奇怪可见性问题

时间:2016-04-07 12:35:05

标签: java javafx fxml scene

我正在开发一个简单的对象数据库应用程序,该应用程序在表中的类中显示条目的各种属性,并允许用户通过辅助输入窗口添加新条目。

主:

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!");

我收到了“无法解决符号”错误,但我无法辨别原因。一种解决方案是添加“Main”。在它前面并声明变量static,但这会为我想要添加的其他功能带来问题。所以我的问题是:

  1. 为什么会出现这种情况? mainWindowController变量是在Main类中声明的,因此,就我所知,它应该可以从应用程序的任何位置看到。

  2. 我该如何解决这个问题;我如何让这条线工作?

1 个答案:

答案 0 :(得分:0)

你真的错了我的朋友,你对实例变量和静态变量非常困惑。 无论如何,你需要获得对第一个类的引用,这是一个很好的例子 https://blogs.oracle.com/acaicedo/entry/managing_multiple_screens_in_javafx1