javafx中的stackpane和root有什么区别?

2024-05-09

我正在练习javafx做饼图。以下是开发饼图的代码。如果我这样做Group并与StackPane,我发现输出没有区别。我已经评论了组部分。只是徘徊两者之间的区别。

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.chart.PieChart.Data;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ChartApp1 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
PieChart pieChart = new PieChart();
//Group p=new Group();

pieChart.setData(getChartData());
primaryStage.setTitle("PieChart");
StackPane root = new StackPane();
root.getChildren().add(pieChart);
//p.getChildren().add(pieChart);
primaryStage.setScene(new Scene(root, 400, 250));
primaryStage.show();
}
private ObservableList<PieChart.Data> getChartData() {
ObservableList<PieChart.Data> answer = FXCollections.observableArrayList();
answer.addAll(new PieChart.Data("java", 17.56),
new PieChart.Data("C", 17.06),
new PieChart.Data("C++", 8.25),
new PieChart.Data("C#", 8.20),
new PieChart.Data("ObjectiveC", 6.8),
new PieChart.Data("PHP", 6.0),
new PieChart.Data("(Visual)Basic", 4.76),
new PieChart.Data("Other", 31.37));
return answer;
}
}

据官方称文档 http://download.java.net/java/jdk9/jfxdocs/javafx/scene/layout/StackPane.html,

堆栈窗格将其子级布置在从后到前的堆栈中。子项的 z 顺序由子项列表的顺序定义 第 0 个孩子位于底部,最后一个孩子位于顶部。如果有边界 和/或填充已经设置,孩子们将被布置在 那些插图。

堆栈窗格将尝试resize每个孩子填写其 内容区。如果无法调整子级的大小以填充堆栈窗格 (要么是因为它无法调整大小,要么是它的最大尺寸阻止了它) 那么就会是aligned在使用对齐的区域内 属性,默认为 Pos.CENTER

虽然官方文档 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Group.html为了Group类指出

A Group节点包含一个可观察列表的儿童是rendered每当该节点处于顺序时rendered。一个集团将承担其子集团的集体界限,但并不直接可调整大小.

应用于组的任何变换、效果或状态都将应用于 该组的所有孩子。这样的变换和效果不会 包含在该组的布局范围内,但是如果变换和 效果直接作用于该组的孩子,这些将是 包含在该组的布局范围内。

默认情况下,组将“自动调整”其托管的可调整大小的子级的大小 他们在布局过程中的首选尺寸,以确保区域 控件的大小会随着其状态的变化而适当调整。如果 应用程序需要禁用此自动调整大小行为,那么它应该 将 autoSizeChildren 设置为 false 并了解如果首选 子项的大小发生变化时,它们不会自动调整大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javafx中的stackpane和root有什么区别? 的相关文章

随机推荐