4

円グラフを作るためにjavafxの練習をしていました。以下は、円グラフを開発するためのコードです。と を使用するGroupと、StackPane出力に違いは見られません。グループ部分にコメントしました。2 つの違いをさまよっているだけです。

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

2 に答える 2

5

公式ドキュメントによると、

StackPaneは、その子を前後のスタックに配置します。子の z オーダーは、子リストの順序によって定義され、0 番目の子が一番下、最後の子が一番上になります。ボーダーやパディングが設定されている場合、子はそれらのインセット内に配置されます。

スタックペインは、各子のサイズを変更してそのコンテンツ領域を埋めようとします。子のサイズをスタックペイン全体に合わせることができなかった場合 (サイズ変更できないか、最大サイズが原因で) 、配置プロパティを使用して領域内に配置されます。デフォルトは Pos.CENTER です。

クラスの公式ドキュメントには、Group

Groupノードには、このノードがレンダリングされるたびに順番にレンダリングされる子の ObservableList が 含まます。Group は、その子の集合的な境界を引き継ぎ、直接 サイズ変更することはできません。

グループに適用される変換、効果、または状態は、そのグループのすべての子に適用されます。このような変換と効果は、このグループのレイアウト境界には含まれませんが、変換と効果がこのグループの子に直接設定されている場合、それらはこのグループのレイアウト境界に含まれます。

デフォルトでは、グループは、状態の変化に応じて領域とコントロールが適切にサイズ設定されるように、レイアウト パス中にサイズ変更可能な管理対象の子を適切なサイズに「自動サイズ設定」します。アプリケーションでこの自動サイズ変更動作を無効にする必要がある場合は、autoSizeChildren を false に設定し、子の優先サイズが変更された場合に自動的にサイズ変更されないことを理解する必要があります。

于 2013-09-12T11:42:06.883 に答える