JavaFX 中窗格和组的区别?
Differences in Pane and Group in JavaFX?
假设您有一段代码:
Pane pane = new Pane();
pane.getChildren().add(circle);
pane.getChildren().add(rectangle);
Scene scene = new Scene(pane, 400, 400);
一定要写pane.getChildren().add(===);每次您想向窗格中添加内容?同样,只写有什么区别..
Pane pane = new Pane(circle, rectangle);
Scene scene = new Scene(pane, 400, 400);
正如我发现的那样,当我 运行 程序并显示形状时,它会做完全相同的事情。此外,使用 Pane 而不是:
在写作上有什么不同?
Group root = new Group(circle, rectangle);
Scene scene = new Scene(root, 400, 400);
如有任何帮助,我们将不胜感激!我一直在网上寻找,但似乎没有找到任何能真正回答我所有问题的东西。
两者之间没有任何区别:
Pane pane = new Pane(node1, node2);
并且:
Pane pane = new Pane();
pane.getChildren().add(node1);
pane.getChildren().add(node2);
两种方法都将节点添加到布局的子列表中。只是第一种方法是通过构造函数来完成的;它基本上是第二种方法的捷径。但是,只要您对布局有参考,就可以随时使用第二种方法。
以下是 Pane
和 Group
之间的一些差异,但我不能保证这是一个详尽的列表:
A Group
在计算其布局边界时将考虑对其子项的任何变换或影响。这会对节点变换(或对其应用效果)时 UI 的行为方式产生深远影响。例如,当您旋转一个正方形时,其宽度和高度会随着时间的推移而增大和缩小。如果那个正方形在 Group
中,那么 Group
的宽度和高度将相应地增长和缩小; Pane
不会这样做。
Group
class 直接延伸自 Parent
。 Pane
class 从 Region
延伸(并且 Region
从 Parent
延伸)。这意味着 Group
具有 none 由 Region
提供的样式选项(例如背景、边框等)。
Group
的 Javadoc 也说:
Any transform, effect, or state applied to a Group will be applied to all children of that group.
我从来没有真正尝试过这个,所以我不确定这是否真的不同于 Pane
。
此外,请记住,您通常希望使用 Pane
,或者更具体地说,Pane
的子class。这包括 BorderPane
、VBox
和 StackPane
等布局。这些布局会根据布局规则自动管理其子项以调整大小和定位它们。您可以使用嵌套布局来实现更复杂的设计。就个人而言,如果我想要上面第一点中提到的行为或者我正在使用 3D 形状,我真的只使用 Group
。
假设您有一段代码:
Pane pane = new Pane();
pane.getChildren().add(circle);
pane.getChildren().add(rectangle);
Scene scene = new Scene(pane, 400, 400);
一定要写pane.getChildren().add(===);每次您想向窗格中添加内容?同样,只写有什么区别..
Pane pane = new Pane(circle, rectangle);
Scene scene = new Scene(pane, 400, 400);
正如我发现的那样,当我 运行 程序并显示形状时,它会做完全相同的事情。此外,使用 Pane 而不是:
在写作上有什么不同?Group root = new Group(circle, rectangle);
Scene scene = new Scene(root, 400, 400);
如有任何帮助,我们将不胜感激!我一直在网上寻找,但似乎没有找到任何能真正回答我所有问题的东西。
两者之间没有任何区别:
Pane pane = new Pane(node1, node2);
并且:
Pane pane = new Pane();
pane.getChildren().add(node1);
pane.getChildren().add(node2);
两种方法都将节点添加到布局的子列表中。只是第一种方法是通过构造函数来完成的;它基本上是第二种方法的捷径。但是,只要您对布局有参考,就可以随时使用第二种方法。
以下是 Pane
和 Group
之间的一些差异,但我不能保证这是一个详尽的列表:
A
Group
在计算其布局边界时将考虑对其子项的任何变换或影响。这会对节点变换(或对其应用效果)时 UI 的行为方式产生深远影响。例如,当您旋转一个正方形时,其宽度和高度会随着时间的推移而增大和缩小。如果那个正方形在Group
中,那么Group
的宽度和高度将相应地增长和缩小;Pane
不会这样做。Group
class 直接延伸自Parent
。Pane
class 从Region
延伸(并且Region
从Parent
延伸)。这意味着Group
具有 none 由Region
提供的样式选项(例如背景、边框等)。Group
的 Javadoc 也说:Any transform, effect, or state applied to a Group will be applied to all children of that group.
我从来没有真正尝试过这个,所以我不确定这是否真的不同于
Pane
。
此外,请记住,您通常希望使用 Pane
,或者更具体地说,Pane
的子class。这包括 BorderPane
、VBox
和 StackPane
等布局。这些布局会根据布局规则自动管理其子项以调整大小和定位它们。您可以使用嵌套布局来实现更复杂的设计。就个人而言,如果我想要上面第一点中提到的行为或者我正在使用 3D 形状,我真的只使用 Group
。