我想问一下如何获取我在控制器中显示的视图。
我想这样做的原因是DirectoryChooser
对话需要ownerWindow
才能正常工作。
还有其他解决方案吗?
DirectoryChooser directoryChooser = new DirectoryChooser();
File file = directoryChooser.showDialog(/*I need a javafx.stage.window here!*/);
答案 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);