获取控制器中的视图

时间:2015-12-01 09:50:04

标签: java model-view-controller javafx

我想问一下如何获取我在控制器中显示的视图。 我想这样做的原因是DirectoryChooser对话需要ownerWindow才能正常工作。

还有其他解决方案吗?

    DirectoryChooser directoryChooser = new DirectoryChooser();
    File file = directoryChooser.showDialog(/*I need a javafx.stage.window here!*/);

2 个答案:

答案 0 :(得分:3)

只需从当前显示的任何场景图元素中获取当前窗口的引用。

button.setOnAction(e -> {
    DirectoryChooser directoryChooser = new DirectoryChooser();
    File file = directoryChooser.showDialog(button.getScene().getWindow());
});

例如,如果通过按钮的操作打开对话框,则可以从按钮引用中获取窗口。代码看起来像:

var count = 0;
function myFunction() {
    if (count == 0) {
        character.style.backgroundColor = "#000000";
        count = 1;
        console.log(count);
    }
    else if  (count == 1) {
        character.style.backgroundColor = "#7FFF00";
        count = 2;
        console.log(count);
    }
    else {
        character.style.backgroundColor = "#A2FAFA";
        count = 0;  
        console.log(count);
    }
}

答案 1 :(得分:0)

并不是说这是正确这样做的方式,但这是 方式。在这里应该牢记反对使用public static的论点。

public class App extends Application {

  public static App mainApp;
  public static Stage mainStage;

  @Override
  public void start(Stage stage) throws Exception {
    // Remember me.
    mainApp = this;
    mainStage = stage;

然后您可以使用:

    File newLocation = chooser.showDialog(App.mainStage);