質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2120閲覧

Javafx.scene.chartで円グラフを描く

saunashio

総合スコア6

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1グッド

0クリップ

投稿2020/10/07 12:51

実現したいこと

JavaFx.scene.chartを使い、円グラフを書こうとしています。
入力されたデータ(配列)を円グラフで表現するため、公式サイトのサンプルコード(https://docs.oracle.com/javase/jp/8/javafx/user-interface-tutorial/pie-chart.htm#CIHFDADD)の 17行目~25行目をfor文で書き換えて、配列の要素の数だけ取り出したデータをnew pychartDateで認識させたいのですが、方法が分かりません。
ご教授お願い致します。

発生している問題・エラーメッセージ

Sample.java:34: エラー: '\u3000'は不正な文字です ^        FXCollections.observableArrayList(

該当のソースコード

Java

1import java.io.*; 2import javafx.application.Application; 3import javafx.collections.FXCollections; 4import javafx.collections.ObservableList; 5import javafx.scene.Scene; 6import javafx.stage.Stage; 7import javafx.scene.chart.*; 8import javafx.scene.Group; 9 10public class Sample extends Application { 11@Override public void start(Stage stage) { 12 Scene scene = new Scene(new Group()); 13 stage.setTitle("Imported Fruits"); 14 stage.setWidth(500); 15 stage.setHeight(500); 16 17 /*ここがサンプルコード 18 ObservableList<PieChart.Data> pieChartData = 19 FXCollections.observableArrayList( 20 new PieChart.Data("Grapefruit", 13), 21 new PieChart.Data("Oranges", 25), 22 new PieChart.Data("Plums", 10), 23 new PieChart.Data("Pears", 22), 24 new PieChart.Data("Apples", 30)); 25*/ 26 27 //以下自分で考えたコード、pa[]はtextファイルから取ってきたデータが入った配列と仮定して設定する。 28 int[] pa = new int[3]; 29 pa[0] = 1; 30 pa[1] = 2; 31 pa[2] = 3; 32 ObservableList<PieChart.Data> pieChartData = 33 ObservableList<PieChart.Data> data = 34         FXCollections.observableArrayList( 35 for(int i = 0;i < pa.length;i++) { 36 new PieChart.Data( Integer.toString(i), pa[i]), 37 } 38 ); 39 /*32~38行目を 40 ObservableList<PieChart.Data> data = 41FXCollections.observableArrayList( 42new PieChart.Data(0, 1), 43new PieChart.Data(1, 2), 44new PieChart.Data(2, 3)); 45となるように書きたい 46 */ 47 final PieChart chart = new PieChart(pieChartData); 48 chart.setTitle("Imported Fruits"); 49 50 51 ((Group) scene.getRoot()).getChildren().add(chart); 52 stage.setScene(scene); 53 stage.show(); 54 } 55 56 public static void main(String[] args) { 57 launch(args); 58 } 59}

試したこと

for文の位置を変えましたが、うまくいきません。
また私がが書いたコードでは「,」の扱いができてないのでしょうか。

補足情報(FW/ツールのバージョンなど)

openjdk version "1.8.0_265"

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いろいろやり方はありますが、わかりやすそうなのはこうでしょうか。

Java

1import javafx.application.Application; 2import javafx.collections.FXCollections; 3import javafx.collections.ObservableList; 4import javafx.scene.Group; 5import javafx.scene.Scene; 6import javafx.scene.chart.PieChart; 7import javafx.stage.Stage; 8 9public class PieChartSample extends Application { 10 @Override 11 public void start(Stage stage) { 12 Scene scene = new Scene(new Group()); 13 stage.setTitle("Imported Fruits"); 14 stage.setWidth(500); 15 stage.setHeight(500); 16 17 ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(); 18 int[] pa = new int[]{ 1, 2, 3 }; 19 20 for (int i = 0; i < pa.length; i++) { 21 pieChartData.add(new PieChart.Data(Integer.toString(i), pa[i])); 22 } 23 24 final PieChart chart = new PieChart(pieChartData); 25 chart.setTitle("Imported Fruits"); 26 27 ((Group) scene.getRoot()).getChildren().add(chart); 28 stage.setScene(scene); 29 stage.show(); 30 } 31 32 public static void main(String[] args) { 33 launch(args); 34 } 35}

アプリ画像

投稿2020/10/07 14:59

編集2023/07/23 07:44
TN8001

総合スコア9321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saunashio

2020/10/08 07:57

ありがとうございます!助かりました!! 「*.add(要素)」という書き方があるのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問