🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaFX

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

Java

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

Eclipse

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

Q&A

解決済

2回答

1519閲覧

どなたかテキストファイルのアコーディオンの作成方法を教えてください・・・

nakagen

総合スコア24

JavaFX

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

Java

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

Eclipse

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

1グッド

0クリップ

投稿2021/01/29 11:32

編集2021/02/04 07:23

前提・実現したいこと

フォルダの中からテキストファイルのみを示すアコーディオンを作成したいのですが、仕組みがわかりません・・・
どなたか教えて頂くことは出来ませんでしょうか?

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

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.Error: Unresolved compilation problems: 式の型は配列型で FileReader に解決済みのものである必要があります コンストラクター File(InputStream) は未定義です 式の型は配列型で FileReader に解決済みのものである必要があります at kadai.seventeen.start(seventeen.java:34) 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 kadai.seventeen

該当のソースコード

Javafx

1package kadai; 2 3import java.io.File; 4import java.io.FileReader; 5import java.io.FilenameFilter; 6 7import javafx.application.Application; 8import javafx.scene.Scene; 9import javafx.scene.control.Accordion; 10import javafx.scene.control.TitledPane; 11import javafx.scene.layout.BorderPane; 12import javafx.stage.Stage; 13 14public class seventeen extends Application{ 15private TitledPane[] tp; 16private Accordion ac; 17private FileReader te; 18 19public static void main(String[] args)throws Exception{ 20 launch(args); 21} 22public void start(Stage stage)throws Exception{ 23//ここから 24 File fl = new File("."); 25 File[] fls = fl.listFiles(new sampleFileFilter()); 26 27 File[]fc = new File[fls.length]; 28 29 tp = new TitledPane[fls.length]; 30 ac = new Accordion(); 31 32 for(int i = 0;i < fls.length;i++) { 33 34te[i] = new File(getClass().getResourceAsStream(fls[i].getName())); 35tp[i] = new TitledPane(fls[i].getName(),te[i]); 36 } 37//ここまでのコードを変えたいです 38テキストファイルの内容をアコーディオンとして順列する方法が分かりません・・・ 39 40 BorderPane bp = new BorderPane(); 41 42 ac.getPanes().addAll(tp); 43 bp.setCenter(ac); 44 45 Scene sc = new Scene(bp,300,300); 46 47 stage.setScene(sc); 48 49 stage.setTitle("サンプル"); 50 stage.show(); 51} 52class sampleFileFilter implements FilenameFilter{ 53 public boolean accept(File f,String n) 54 { 55 if(n.toLowerCase().endsWith(".txt")) { 56 return true; 57 } 58 return false; 59 } 60} 61} 62

試したこと

ファイルを入れられるようにしたのですが・・・

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

jdk14

TN8001👍を押しています

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

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

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

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

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

WhiteTempest

2021/01/29 13:28

「ここの仕組み」が漠然です。 よろしければ、色を変えたり、 スタート/エンドで範囲を示したりしてもらえませんか? どこまでご理解されて、 どこが分からないのか、回答者が判断に苦慮します。
nakagen

2021/02/04 07:21

申し訳ありませんでした! すぐに変えます!
guest

回答2

0

当然チュートリアルくらいは読んでいますよね。

提供されたソースはコンパイルできませんのでなにをしたいのかはよくわかりませんが、ファイルの内容を読まずにファイルの内容を表示できないことはわかると思います。
回答そのものではありませんが、チュートリアルを改変したものを提示します。参考まで。

java

1import javafx.application.Application; 2import javafx.scene.Scene; 3import javafx.scene.control.*; 4import javafx.stage.Stage; 5 6import java.io.File; 7import java.nio.file.Files; 8import java.util.stream.Collectors; 9 10public class TitledPaneSample extends Application { 11 12 public static void main(String[] args) { 13 launch(args); 14 } 15 16 @Override 17 public void start(Stage stage) throws Exception { 18 final File file = new File("TitledPaneSample.java"); 19 final String text = Files.readAllLines(file.toPath()).stream().collect(Collectors.joining("\n")); 20 final TextArea textArea = new TextArea(text); 21 22 final Accordion accordion = new Accordion(); 23 accordion.getPanes().add(new TitledPane(file.getName(), textArea)); 24 accordion.getPanes().add(new TitledPane("label", new Label("らべる"))); 25 accordion.getPanes().add(new TitledPane("ボタン", new Button("ぼたん"))); 26 27 Scene scene = new Scene(accordion); 28 stage.setScene(scene); 29 stage.setHeight(300); 30 stage.show(); 31 } 32}

投稿2021/01/29 13:44

shiketa

総合スコア4054

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

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

nakagen

2021/02/04 07:24

ご回答ありがとうございます。 ファイルの内容を読み込ませて、アコーディオンに、ファイルの内容を列挙することは可能でしょうか・・・?
guest

0

ベストアンサー

java テキストファイル 読み込み」等で検索されたのでしょうか?(提示コードからは全く読み取れません)
歴史的経緯で方法が複数ありややこしいのですが、Java11以上なら1行で簡単に読めます。

Java

1import java.io.File; 2import java.io.IOException; 3import java.nio.file.Files; 4 5import javafx.application.Application; 6import javafx.scene.Scene; 7import javafx.scene.control.Accordion; 8import javafx.scene.control.TextArea; 9import javafx.scene.control.TitledPane; 10import javafx.scene.layout.BorderPane; 11import javafx.stage.Stage; 12 13public class seventeen extends Application { 14 public static void main(String[] args) { launch(args); } 15 16 public void start(Stage stage) throws IOException { 17 // ↓ラムダ式 sampleFileFilterでやっているのと同じ 18 File[] textFiles = new File(".").listFiles((f, n) -> n.toLowerCase().endsWith(".txt")); 19 20 Accordion accordion = new Accordion(); 21 22 for (File file : textFiles) { 23 String text = Files.readString(file.toPath()); // Java11以上ならこれでファイルからStringに一気に読める 24 TextArea textArea = new TextArea(text); // 読んだ文字列をTextAreaに入れる 25 TitledPane titledPane = new TitledPane(file.getName(), textArea); // タイトル部分はファイル名 中身はTextArea 26 accordion.getPanes().add(titledPane); 27 } 28 29 BorderPane borderPane = new BorderPane(); 30 borderPane.setCenter(accordion); 31 32 stage.setScene(new Scene(borderPane, 300, 300)); 33 stage.setTitle("サンプル"); 34 stage.show(); 35 } 36}

投稿2021/02/04 16:55

編集2023/08/13 12:50
TN8001

総合スコア9857

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

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

nakagen

2021/02/06 14:27

ご回答ありがとうございます! すみません、readStringが使えなかったため、java11ではないことが分かりました また、別のところで質問します!
shiketa

2021/02/06 15:16 編集

Java8でも使えるのを紹介したんだけどなぁ。読んでくれていないのね。 ` final String text = Files.readAllLines(file.toPath()).stream().collect(Collectors.joining("\n"));`
nakagen

2021/02/06 15:17 編集

大変申し訳ありませんでした・・・。 私の読み間違いで、このようなことになってしまいました・・・ すみません、一度このコードについて質問したいことがあるので、別の質問ページに来て頂けることは可能でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問