当前位置: 首页 > 知识库问答 >
问题:

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

公西季
2023-03-14

我在练习javafx做饼图。下面是开发饼图的代码。如果使用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;
}
}

共有1个答案

曹育
2023-03-14

根据官方文件,

StackPane以从后到前的堆栈方式布局其子级。子级的Z顺序由子级列表的顺序定义,第0个子级是底部,最后一个子级在顶部。如果设置了边框和/或填充,则将在这些内嵌中布局子项。

stackpane将尝试调整每个子级的大小以填充其内容区域。如果子级的大小不能填充stackpane(可能是因为它的大小不可调整,或者它的最大大小阻止了它),那么它将使用alignment属性在区域内对齐,该属性默认为POS.Center

group类的官方文档指出

Group节点包含子节点的ObservableList,无论何时呈现此节点,这些子节点都按顺序呈现。一个组将具有其子组的集体边界,并且不能直接调整其大小。

应用于组的任何转换、效果或状态都将应用于该组的所有子组。此类转换和效果将不包括在该组的布局边界中,但如果转换和效果直接设置在该组的子级上,则这些转换和效果将包括在该组的布局边界中。

默认情况下,在布局传递过程中,组将“自动调整”其托管的可调整大小的子级到它们的首选大小,以确保随着区域和控件的状态更改而正确调整其大小。如果应用程序需要禁用这种自动调整大小的行为,那么它应该将autoSizeChildren设置为false,并理解如果子级的首选大小改变,它们将不会自动调整大小。

 类似资料:
  • 问题内容: 我在控制器中看到$ scope有$ root,这是什么?与可以注入控制器的$ rootScope有何不同? 问题答案: var指向所有作用域的父级,可以在任何地方注入。所有其他范围是的子级。它们是通过的方法创建的,因此每个范围都继承自。 在构造函数 的定义中的角度源中有一行: 似乎var只是创建的第一个作用域- 的占位符。 接下来是这段代码在方法: 因此,每个作用域子对象的var 都是

  • 问题内容: 也许是一个真正的新手问题。 通过阅读以下教程,我将开始使用Scene Builder在FMXL应用程序中学习JavaFX: http://docs.oracle.com/javase/8/javafx/get-started-tutorial/fxml_tutorial.htm 因此,一旦我应用了一些更改,就会出现有关这2个ID的问题…我可能已经错过或混淆了一些关于它们的信息… 谁能告

  • 也许是一个新手的问题...... 我开始学习JavaFX在FMXL应用程序中使用场景生成器,通过阅读以下教程: http://docs.oracle.com/javase/8/javafx/get-started-tutorial/fxml_tutorial.htm 所以一旦我应用了一些更改,这个2个ID的问题出现了...我可能错过了或混淆了他们的一些事情... 谁能告诉我它们在哪些情况下被使用?

  • 我有一个BufferedImage,我想在stackpane中显示,因为我在JavaFX应用程序中工作。几天前我也处于同样的情况,但我在Java工作,在这种情况下,我喜欢这样: ... 该方法继续使用其他代码,但目前并不重要。所以,在Java我用图像创建一个Jtag,然后添加到Jframe。我必须在JavaFX中做什么才能在Stackpane中显示图片?我尝试了其中是一个stackpane,但它不

  • 我刚开始学习javafx来构建桌面应用程序。但有一件事我不明白。我的问题是:我们可以通过编写代码来创建gui,如下所示: 或者,我们可以用场景构建器创建gui,如下所示: 如果第二种方法可用,我们为什么要使用编写代码,比如在哪里放置这个标签或按钮或其他什么。?

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa