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

我正在为做饼图的javafx练习。以下是开发饼图的代码。如果我使用GroupStackPane进行处理,则在输出中没有发现任何区别。我已对Group部分进行了注释。只是在两者之间徘徊。

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;
}
}

参考方案

根据官方的documentation,

StackPane 将其子级布置在从后到前的堆栈中。子级的z顺序由子级列表的顺序定义
第0个孩子是最下面的孩子,最后一个孩子是最上面的孩子。如果有边界
和/或填充已设置,孩子们将被布置在
这些插图。

堆栈窗格将尝试调整的大小以填充每个孩子
内容区域。如果无法调整孩子的尺寸以填满堆栈窗格
(由于无法调整大小或由于其最大尺寸而无法调整)
那么它将使用对齐方式在区域内对齐
属性,默认为Pos.CENTER

虽然Group类的官方documentation指出:

节点包含以下子项的 ObservableList :
每当渲染时,依次渲染。小组将承担其子女的集体责任,而不是直接
可调整大小的

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

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

JavaFX FXML无效类型 - java

我正在Linux中用Eclipse编写JavaFX应用程序,并使用SceneBuilder编写了某些FXML代码。当我移至Windows时,如果我尝试执行代码,它将运行良好,但是,如果我尝试修改fxml文件,它将开始给我一个错误(与修改无关)。我也尝试使用NetBeans,但没有任何改变。错误是:javafx.fxml.LoadException: Ligh…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

JavaFX HBox HGrow优先级 - java

我有一个包含javafx.scene.layout.HBox的JavaFX场景。此HBox包含两个孩子,一个javafx.scene.control.ComboBox后跟一个javafx.scene.control.Spinner。最小的FXML文件来说明我的问题是:<?import javafx.scene.control.ComboBox?>…

创建具有不同样式的大量文本-JavaFX FXML - java

在JavaFx应用程序的fxml类中,我想使用最少的组件(而不是每行添加多个标签)来添加大量文本。我还想在同一组件中创建各种样式的文本。我应该使用哪个组件(例如TextArea),以及如何在其中创建多个样式(使用CSS)。 参考方案 使用TextFlow并向其中添加Text。您可以在各个Text组件上使用CSS为它们设置不同的样式。完整的例子:import …

Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…