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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

910閲覧

診断機能と画像の設定の仕上げ、その2

nakagen

総合スコア24

JavaFX

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

0クリップ

投稿2021/01/06 13:59

前提・実現したいこと

・診断の結果は、ジャンプ先の最後の場所で作るというイメージでしょうか?(そこから、また別のステージに飛ぶシステムを作りたいです)

・画像のファイルを設定するときに保存する仕組みもつくったのですが、保存先のフォルダをダイアログで指定するのは可能でしょうか…?

宜しくお願い致します。

該当のソースコード

javafx

11番目の質問のコード 2このじゅんぷ先を最終的に32通りになるように作るのでしょうか? 3 private void createCSV() throws IOException { 4 List<String> lines = Arrays.asList( 5 // インデントは単に見やすくするだけで、階層を解析しているわけではない 6 // 問1問2問2問3問3問3問3 の順番でも別に構わないが、おそらく見にくいw 7 // ジャンプ行番号を間違えるとループしたり、IndexOutOfBoundsException が出ます! 8 // 質問or診断中の'↵'は、読み込み時に改行に置換 9 "質問,選択1,選択2,選択1ジャンプ行番号,選択2ジャンプ行番号", 10 "問1:,aaa,bbb,3,10", 11 " 問2:,aaa,bbb,4,7", 12 " 問3:,aaa,bbb,5,6", 13 " 診断↵aaa aaa aaa", 14 " 診断↵aaa aaa bbb", 15 " 問3:,aaa,bbb,8,9", 16 " 診断↵aaa bbb aaa", 17 " 診断↵aaa bbb bbb", 18 " 問2:,aaa,bbb,11,14", 19 " 問3:,aaa,bbb,12,13", 20 " 診断↵bbb aaa aaa", 21 " 診断↵bbb aaa bbb", 22 " 問3:,aaa,bbb,15,16", 23 " 診断↵bbb bbb aaa", 24 " 診断↵bbb bbb bbb"); 25 26 Files.write(Paths.get("test.csv"), lines, StandardCharsets.UTF_8); 27 } 28}

javafx

12番目の質問のコード 2 bt1.setOnAction(ae -> { 3 FileChooser fileChooser = new FileChooser(); 4 FileChooser.ExtensionFilter imageFilter = new FileChooser.ExtensionFilter("画像ファイル", "*.bmp", "*.gif", "*.jpg", "*.jpeg", "*.png"); 5 fileChooser.getExtensionFilters().add(imageFilter); 6 File file = fileChooser.showOpenDialog(stage4); 7 if (file != null) { 8 Image image = new Image(file.toURI().toString(), 0, 100, true, true); 9 lb.setGraphic(new ImageView(image)); 10 11 String dir = ""; 12 String fileName = file.getName(); // ファイル名 13 String ext = fileName.substring(fileName.lastIndexOf(".") + 1); 14 File output = new File(dir + fileName); 15 try { 16 ImageIO.write(SwingFXUtils.fromFXImage(image, null), ext, output); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 } 21 22 23 //チェックボタンで、総水量と総日光量の計算が出来るようにする(なお、変数は総水量と総日光量と比べる基準とする) 24 //警告枠の作成 25 });

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

jdk14

TN8001👍を押しています

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

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

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

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

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

TN8001

2021/01/06 14:52

タイトルや内容もそうなのですが、nakagenさんにとってはそうなのでしょうが、第三者が検索等で来ることもあります。 質問者・回答者・閲覧者それぞれメリットを得られるよう、端的かつ十分な情報を記載するよう努めてください。 よりよい質問になるようにしていきましょう。 もし読んでいなければ一通り目を通しておきましょう。 [質問するときのヒント|teratail(テラテイル)](https://teratail.com/help/question-tips [3分でわかるteratail|teratail(テラテイル)](https://teratail.com/tour
nakagen

2021/01/06 15:59

たしかに、他者から見ても分かるような内容で書かないといけませんね… 気を付けます
guest

回答1

0

ベストアンサー

・診断の結果は、ジャンプ先の最後の場所で作るというイメージでしょうか?(そこから、また別のステージに飛ぶシステムを作りたいです)

これだけだと何が何だかわかりませんが、こちらの続きです。
Eclipse - 診断機能の仕上げをしたい|teratail

動かしてみればわかると思うのですが、これは3問ですが5問になるように作っていただければ32通りになりますよね?
わからないという場合は私の日本語力の問題ですが、32通り作ったほうがいいですか?(面倒ですが^^;

で、結果を別のステージ(というのはStage≒ウィンドウということだと思いますが)に飛ばしたい、と。

実際に判定している部分はprivate void jump(int index)ですので、そこで好きなように作ってください。例えばこんな感じ。

Java

1private void jump(int index) { 2 current = questions[index]; // 現在の質問を指定インデックスの質問に変更 3 4 // Choiceがnull = 診断結果 5 if (current.Choice1 == null) { 6// ((Stage) button1.getScene().getWindow()).close(); // このStageを閉じるなら 7 8 Stage stage = new Stage(); 9 stage.setScene(new Scene(new Label(current.Text), 400, 300)); 10 stage.show(); 11 } else { 12 label.setText(current.Text); 13 button1.setText(current.Choice1); 14 button2.setText(current.Choice2); 15 } 16}

・画像のファイルを設定するときに保存する仕組みもつくったのですが、保存先のフォルダをダイアログで指定するのは可能でしょうか…?

これも何が何だかわかりませんが、こちらの続きです。
Eclipse - DirectoryChooserで読みだしたファイルをString型に変換して、フォルダの中の写真を開きたい|teratail

Java

1String dir = ""; 2String fileName = file.getName(); 3File output = new File(dir + fileName);

↑のかわりに↓とすれば選択したフォルダに保存することになります。

Java

1String fileName = file.getName(); 2DirectoryChooser directoryChooser = new DirectoryChooser(); 3File dir = directoryChooser.showDialog(stage4); 4File output = new File(dir, fileName);

しかしダイアログが連続して出るのは、うるさくないですかね?


test.csv

csv

1質問,選択1,選択2,選択1ジャンプ行番号,選択2ジャンプ行番号 2問1:,Y,N,3,34 3 問2:,Y,N,4,19 4 問3:,Y,N,5,12 5 問4 : ,Y,N,6,9 6 問5 : ,Y,N,7,8 7 診断↵YYYYY 8 診断↵YYYYN 9 問5 : ,Y,N,10,11 10 診断↵YYYNY 11 診断↵YYYNN 12 問4 : ,Y,N,13,16, 13 問5 : ,Y,N,14,15 14 診断↵YYNYY 15 診断↵YYNYN 16 問5 : ,Y,N,17,18 17 診断↵YYNNY 18 診断↵YYNNN 19 問3:,Y,N,20,27 20 問4 : ,Y,N,21,24 21 問5 : ,Y,N,22,23 22 診断↵YNYYY 23 診断↵YNYYN 24 問5 : ,Y,N,25,26 25 診断↵YNYNY 26 診断↵YNYNN 27 問4 : ,Y,N,28,31 28 問5 : ,Y,N,29,30 29 診断↵YNNYY 30 診断↵YNNYN 31 問5 : ,Y,N,32,33 32 診断↵YNNNY 33 診断↵YNNNN 34 問2:,Y,N,35,50 35 問3:,Y,N,36,43 36 問4 : ,Y,N,37,40 37 問5 : ,Y,N,38,39 38 診断↵NYYYY 39 診断↵NYYYN 40 問5 : ,Y,N,41,42 41 診断↵NYYNY 42 診断↵NYYNN 43 問4 : ,Y,N,44,47 44 問5 : ,Y,N,45,46 45 診断↵NYNYY 46 診断↵NYNYN 47 問5 : ,Y,N,48,49 48 診断↵NYNNY 49 診断↵NYNNN 50 問3:,Y,N,51,58 51 問4 : ,Y,N,52,55 52 問5 : ,Y,N,53,54 53 診断↵NNYYY 54 診断↵NNYYN 55 問5 : ,Y,N,56,57 56 診断↵NNYNY 57 診断↵NNYNN 58 問4 : ,Y,N,59,62 59 問5 : ,Y,N,60,61 60 診断↵NNNYY 61 診断↵NNNYN 62 問5 : ,Y,N,63,64 63 診断↵NNNNY 64 診断↵NNNNN

投稿2021/01/06 14:41

編集2021/01/06 18:13
TN8001

総合スコア9361

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

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

退会済みユーザー

退会済みユーザー

2021/01/06 14:49

もうTN8001さんが作ってるようなもんですね(^^; 少しやり取り見させていただきましたが、もう少し自分で取り組んでもいい気がするんですけどね。。。
TN8001

2021/01/06 14:59

答えすぎという自覚はありますが、本職?のC#ネタがなく暇というのもあります^^; (過去自分が大変苦労したこともあり)個人で何か実際に作ってる方には、甘くなってしまうんですよねぇ。
nakagen

2021/01/06 16:00

TN8001さん 本当に、甘えさせてしまってすみません…!TN8001さんみたいに、プログラムの仕組みを考えられるのは尊敬します…
nakagen

2021/01/06 16:05

>これも何が何だかわかりませんが、こちらの続きです。 この通りでした!また、ダイアログが連発することについてなのですが、予めそのような仕様になっていることを説明する形で行きたいと思います。 >動かしてみればわかると思うのですが、これは3問ですが5問になるように作っていただければ32通りになりますよね? こちらで、32通りになるよう作成してみました!1つ気になったのですが、test.csvの中の質問文が反映されないです…
TN8001

2021/01/06 16:20

>test.csvの中の質問文が反映されないです… うーんとどちらかというと逆なのですが createCSV() メソッドは test.csv が保存される場所やフォーマットに誤解がないように&すぐ試せるようにプログラムから作成しました。 保存場所やフォーマットが理解できたら test.csv を編集していただいて、createCSV() は使わないようにします(メソッド丸ごといりません) そうしないと test.csv を編集しても、コードの方の内容で上書きされてしまいます。
nakagen

2021/01/06 16:30

少し、元々の形でも試してみたのですが、出てきません… test.csvの書き方は、 この前の私が書いた図に似たイメージという認識なのですが、合っていますかね…?
TN8001

2021/01/06 16:35

仮の内容でいいので、test.csvを質問に追記していただけませんか?
nakagen

2021/01/06 16:48

わかりました 長くてすみません "質問,選択1,選択2,選択1ジャンプ行番号,選択2ジャンプ行番号", "問1:,aaa,bbb,3,", " 問2:,aaa,bbb,4,19", " 問3:,aaa,bbb,5,13,", " 問4 : ,aaa,bbb,6,9,", " 問5 : ,aaa,bbb,7,8,", " 診断↵000 000 001", " 診断↵000 000 011", " 問5 : ,aaa,bbb,10,11,", " 診断↵000 000 010", " 診断↵000 000 100", " 問4 : ,aaa,bbb,14,17,", " 問5 : ,aaa,bbb,15,16,", " 診断↵000 000 101", " 診断↵000 000 111", " 問5 : ,aaa,bbb,17,18", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問3:,aaa,bbb,20,26,", " 問4 : ,aaa,bbb,21,24,", " 問5 : ,aaa,bbb,22,23", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,24,25", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問4 : ,aaa,bbb,27,30,", " 問5 : ,aaa,bbb,28,29,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問2:,aaa,bbb,,", " 問3:,aaa,bbb,,", " 問4 : ,aaa,bbb,,,", " 問5 : ,aaa,bbb,,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問4 : ,aaa,bbb,,", " 問5 : ,aaa,bbb,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問3:,aaa,bbb,,", " 問4 : ,aaa,bbb,,,", " 問5 : ,aaa,bbb,,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問4 : ,aaa,bbb,,", " 問5 : ,aaa,bbb,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " 問5 : ,aaa,bbb,", " 診断↵aaa aaa aaa", " 診断↵aaa aaa aaa", " ");
TN8001

2021/01/06 17:30

text.csvを追記しました。 YES NO でYYYYYからNNNNNまで32パターンです。 全パターンは試してはいませんが、おそらくあっていると思います^^;
nakagen

2021/01/06 17:41

ただいま確認したところ、分岐は出来ていました!ただ、問題文と診断結果の出る場所がメニュー画面の診断ボタンの上になっていました…
TN8001

2021/01/06 17:52

>メニュー画面の診断ボタンの上になっていました… というのは私のコードでいう class Main の「心理テストだよ」にあたる部分ですか? class seEventHandler は class Main の内部クラスになっているのでしょうか? Labelの変数名が同じだったりすると、意図しないものを変更しているのかもしれません。
nakagen

2021/01/06 18:00 編集

>というのは私のコードでいう class Main の「心理テストだよ」にあたる部分ですか? 確認してみたところ、その通りでした。この場合は、新たにラベルを作成して、そこに診断結果を貼るといったことになるのでしょうか? 問題文もそこに表示されていたので、メニュー画面と連動してしまった可能性があります
nakagen

2021/01/06 18:11

もしかしてなのですが、privateの場所をアプリケーションの場所に置いてしまったのが原因ですかね…?
TN8001

2021/01/06 18:16

結果を新たなウィンドウに出したいなら回答の通りですが、どこがわかりませんか? (ちょっと間違いがあったので修正しました) >privateの場所をアプリケーションの場所に置いてしまったのが原因ですかね…? ちょっと意味が分かりませんが、内部クラスの話でしょうか。 回答コードのように外に出せるなら出したほうが事故は減りますが、何か参照しているとなるとそんな簡単な話でもなくなります。
nakagen

2021/01/06 18:47

すみません、回答に書かれていたコードをいれてみたのですが -----エラーコード Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException: Children: child node is null: parent = VBox@557d4eaa at javafx.scene.Parent$2.onProposedChange(Parent.java:435) at com.sun.javafx.collections.VetoableListDecorator.add(VetoableListDecorator.java:206) at saisyuukadai.date1.start(date1.java:150) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ... 1 more Exception running application saisyuukadai.date1 Exception in Application start method java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException: Children: child node is null: parent = VBox@557d4eaa at javafx.scene.Parent$2.onProposedChange(Parent.java:435) at com.sun.javafx.collections.VetoableListDecorator.add(VetoableListDecorator.java:206) at saisyuukadai.date1.start(date1.java:150) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) ... 1 more Exception running application saisyuukadai.date1 ------ が起きてしまいました・・・
TN8001

2021/01/07 09:27

はっきり言ってどこにどう入れたのかもわからない状況で、私にわかるはずもありません。 これからわかることは 何かがnullだった。 date1.java:150 WinApplication.java:177 の周辺が怪しそう。 VBox.getChildren()等しているところはないか。 ぐらいです。 私の回答314155(診断機能の仕上げをしたい)ではまとめて書いてしまいましたが、class Questionやclass seEventHandlerは単独でファイルを作ってください。 nakagenさんの元のクラスと被ってしまうので、class se2EventHandlerとでもして、Question.java・se2EventHandler.javaを作ります。 うまく動いていた状況まで戻り、nakagenさんがnew seEventHandler()としていた部分を、new se2EventHandler()として入れ替えます。 こうすれば少なくとも回答コード側が、WinApplicationやdate1に何かすることはありません。 これで動くのを確認出来てから、314375(診断機能と画像の設定の仕上げ、その2)の変更を試してください。
nakagen

2021/01/11 09:24

ご返事が遅くなってしまい、申し訳ありませんでした。原因は、ラベルの記号を間違えてしまった私の凡ミスであったため、診断機能の動作は確認できました(本当にすみません・・・)!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問