何年か振りでJavaの勉強を再開しました。JavaFXでウィンドウズのエクスプローラみたいなものを作ってみようと始めたのですが、TreeViewにTreeItemが表示されません。
1.まずFXMLは下記の通りです。
<AnchorPane id="AnchorPane" prefHeight="484.0" prefWidth="857.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="km_immagine.FXMLDocumentController">
<children>
<BorderPane prefHeight="484.0" prefWidth="857.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<bottom>
<Label prefWidth="857.0" text="Label" />
</bottom>
<center>
<TableView prefHeight="460.0" prefWidth="633.0">
<columns>
<TableColumn prefWidth="75.0" text="列X" />
<TableColumn prefWidth="75.0" text="列X" />
</columns>
</TableView>
</center>
<left>
<TreeView fx:id="treeView" prefHeight="200.0" prefWidth="200.0" />
</left>
<top>
<MenuBar>
<menus>
<Menu mnemonicParsing="false" text="ファイル">
<items>
<MenuItem mnemonicParsing="false" text="閉じる" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="編集">
<items>
<MenuItem mnemonicParsing="false" text="削除" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="ヘルプ">
<items>
<MenuItem mnemonicParsing="false" text="バージョン情報" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
</BorderPane>
</children>
</AnchorPane>
2.それに対するコントローラは下記の通りです。
public class FXMLDocumentController implements Initializable {
@FXML
private TreeView<String> treeView;
@Override
public void initialize(URL url, ResourceBundle rb) {
TreeItem<String> rootItem = new TreeItem<>("root");
TreeItem<String> children01 = new TreeItem<>("children01");
rootItem.getChildren().add(children01);
this.treeView = new TreeView<>(rootItem);
}
}
3.で、下記のメインクラスから表示させても、TreeViewに何も表示されません。
public class KM_Immagine extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
メインクラスでAnchorPaneにTreeViewを追加し、それをSceneに追加する方法でなら、TreeItemが表示出来ます。
私のやり方は、何か初歩的なミスをしていると思うのですが、ネットで色々調べても分かりませんでした。
どなたか、ご教示願います。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
initialize() メソッドの最後で treeView フィールドに対して新たに TreeView のインスタンスを生成して代入していますが、これが間違いです。
@FXML アノテーションを付与したフィールドは、initialize() メソッドに入った時点で、FXML ファイルの内容を元に作られたインスタンスが代入されています。
従って、最後の行で次のように treeView フィールドの setRoot() メソッドを用いて rootItem を設定してあげればいいわけです。
(誤)
this.treeView = new TreeView<>(rootItem);
(正)
this.treeView.setRoot(rootItem);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java final 1 2022/06/10 22:49
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドライン引数のチェック
-
Java初級 引数に適用できません
-
レコード件数の表示
-
C# 点の描き方をおしえてくだ...
-
public static void main (Stri...
-
戻り値の異なるメソッドの多重...
-
Google Apps Script で getRang...
-
Java初心者です、エラーの意味...
-
メソッド宣言の戻り値の型にク...
-
JavaからCへ
-
スーパークラスからサブクラス...
-
親の親のメソッドを呼ぶには?
-
シェルスクリプトからのJavaメ...
-
Javaの公式メソッドの中身を見...
-
JAVAコンパイルができない。
-
別クラスのmainメソッドの実行
-
abstract と static を一緒に付...
-
Javaの関数名が長い?
-
contextってなんですか?
-
privateのメソッドをリフレクシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
なぜprotected overrideなのか
-
Strutsでチェックボックスの値...
-
Google Apps Script で getRang...
-
abstract と static を一緒に付...
-
C# 点の描き方をおしえてくだ...
-
レコード件数の表示
-
public static void main (Stri...
-
StringBufferからStringへキャ...
-
YYYYMMDD書式の日付に対する適...
-
C# でメソッドに送られてきたOb...
-
シェルスクリプトからのJavaメ...
-
C# の ByVal と ByRef について
-
Fileの読み取り専用の解除
-
CSVから読み込んだデータの保持...
-
メソッドの引数に指定されてい...
-
javaに"search"という関数 or ...
-
Javaのメモリの管理
-
Java初心者です、エラーの意味...
おすすめ情報