我正在通过这个教程:https://docs.oracle.com/javase/8/javafx/get-started-tutorial/hello_world.htm
上面写着:
“JavaFX应用程序通过阶段和场景定义用户界面容器。JavaFX阶段类是顶级JavaFX容器。JavaFX场景类是所有内容的容器……”
"在JavaFX中,场景的内容表示为节点的分层场景图。在本例中,根节点是StackPane对象..."
我不明白舞台物体的意义是什么。如果StackPane是根节点(我理解整个树结构),如果场景是所有内容的容器,那么舞台在做什么?为什么不能由现场完成?
下面是代码:
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
// TODO Auto-generated method stub
Button btn = new Button("Say 'Hello World'");
btn.setOnAction((ActionEvent event) -> System.out.println("Hello World!"));
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这基本上是一种分离的担忧。
Stage
是一个用于修改外观、标题、位置等的对象。在窗口
中,场景
用于布局和处理事件等。。
在不同的类中实现功能是一个设计决策,这很可能还受到以下事实的影响:如果完全由提供的窗口内的工具箱渲染,则窗口由操作系统提供,场景也由工具箱提供。
然而,Scene也可以用于在其他GUI库中嵌入JavaFX的容器中(FXCanvas
,JFXPanel
)。
我不知道免费单子是用来做什么的,也不知道单子转换器库是什么。我也听说过mtl和自由单子的辩论,但我不确定是什么,因为我在互联网上找不到任何关于这一点的讨论。 有人能解释一下这场争论是关于什么的吗?
问题内容: 我想在屏幕上居中放置一个舞台。 这是我尝试过的: 调用centerOnScreen()后,舞台过高。它似乎无法正常工作。我需要自己计算x和y pos吗?或者如何正确使用此功能? 问题答案: 的默认实现如下: 哪里 总是将舞台设置为比中心高一点。 要将舞台定位在精确的中心,可以使用您设置的 自定义X和Y值 。
我一直试图从控制器打开一个新窗口以显示进度条: 请帮忙。没有例外,也没有错误。谢谢 编辑:我已经找到了它不显示的原因,这是因为在后面的代码中我有一个函数:阻止程序刷新我的场景和显示元素。是否有一种方法可以在后台或另一个线程中运行这一行(我以前从未使用过线程)再次感谢你的帮助。
问题内容: 我正在JavaFx中创建一个应用程序,如果要打开任何子阶段,则应在其中进行操作,然后应在父阶段的中心打开它。我正在尝试使用它来执行此操作,但是它将子级分配到屏幕的中心,而不是父级的中心。如何将子阶段分配给父阶段的中心? 问题答案: 您可以使用父级的X / Y / width / height属性来执行此操作。除了使用,您可以执行以下操作:
我对may e(fx)clipse应用程序有问题。我想在应用程序启动时显示一个启动屏幕。我成功地创建了实现StartupProgressTrackerService的类,并调用了我的stateReach方法。然而,我对javafx本身有问题。我想用StageStyle创建Stage。未装饰。然而,当我调用stage时。show()方法阶段不会立即渲染,并在创建主窗口后立即显示。它可以很好地工作,例
我想知道应该如何在javaFX舞台上设置图标。我已经找到了这个方法,但它没有正常工作。 stage是javafx.stage.stage的一个实例,我已经导入了javafx.scene.image.image。这是我们收到的例外: 无效URL:找不到无效URL或资源