我正在为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;
}
}
答案 0 :(得分:5)
根据官方documentation,
StackPane 以后向前的方式展示其子项。子项的z顺序由子项列表的顺序定义 第0个孩子是最底层,最后一个孩子在最顶层。如果是边境 和/或填充已经设定,孩子们将被安排在里面 那些插图。
堆叠窗格将尝试调整大小每个孩子填充它 内容区域。如果孩子的大小不能填充堆叠窗格 (或者因为它不可调整大小或者它的最大大小阻止它) 然后使用对齐方式在区域内对齐 property,默认为Pos.CENTER
虽然Group
类的官方documentation说明
组节点包含 ObservableList 的子项 每当此节点呈现时,呈现。一个集团将承担其子女的集体界限,而不是直接的 的可调整大小的强>
应用于组的任何转换,效果或状态都将应用于 该群体的所有孩子。这样的变换和效果不会 包含在此组的布局范围内,但是如果转换和 效果直接设定在本集团的子女身上 包含在本集团的布局范围内。
默认情况下,组会将其可管理的可调整大小的子项“自动调整”为 布局过程中他们的首选尺寸确保区域 和控件的大小正确,因为状态的变化。如果 应用程序需要禁用此自动调整大小的行为,然后它应该 将autoSizeChildren设置为false并了解如果是首选 孩子的大小发生变化,他们不会自动调整大小。
答案 1 :(得分:2)
StackPane
是一个容器对象;它用于以特定方式布置节点(根据z顺序从前到后)。从功能上讲,StackPane
是一个布局管理器。术语root或根节点指的是JavaFX应用程序的场景图中的最顶层节点。根节点传递给Scene
的构造函数;它是唯一没有父级的节点。 Group
也是一个容器。它不是布局管理器;它将孩子放在绝对坐标中。 StackPane
和Group
可以是根节点。
如果您想将图表放在应用程序客户区的特定位置,您会发现Group
和StackPane
之间存在差异。在x = 10和y = 10处放置图表可以与Group
一起使用,但不适用于StackPane
。