从MenuItem获取场景

时间:2014-12-29 16:46:05

标签: javafx-8

我如何从MenuItem获取场景?我试过这段代码:

public class MainController implements Initializable {
@FXML
private MenuBar menuBar;

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}    

@FXML
public void show(ActionEvent event) throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.initOwner(menuBar.getScene().getWindow());
stage.show();
}

}

上面的代码不会产生错误,但它不显示窗口!!!

1 个答案:

答案 0 :(得分:1)

好吧,在Controller类中,使用getter和setter为Scene添加一个变量。 然后你可以做这样的事情:

@Override
public void start(Stage primaryStage)throws Exception {

    FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/fxml"));
    Parent root = loader.load();
    MainController mainControls = loader.getController();

    Scene scene = new Scene(root, 300, 250);
    mainControls.setScene(scene);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
}

现在该场景可用于该班级中的所有项目。

看起来您正在尝试创建各种对话? 如果是这样的话,请不要使用主场景...创建一个新的舞台并显示它的内容...
虽然我相信JDK现在支持Dialog。