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

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

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

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

Q&A

解決済

2回答

5648閲覧

JavaFX ListViewに対する要素の追加

yogurt

総合スコア12

JavaFX

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

0グッド

0クリップ

投稿2017/07/29 17:26

編集2017/07/31 15:24

###前提・実現したいこと
2つのクラスと1つのFXMLを持っているプログラムについて、JavaFXでListViewに対しての要素の追加を行いたいのですが、どのように行えばいいかわからないです…

追記:要素の追加を行うために、MainクラスからControllerクラスのaddListView(String Message) メソッドをどのような形で呼べばNPEを吐かれずに正しく呼ぶことが出来るのかが知りたいです!(説明不足ごめんなさい!)

どなたか教えていただけないでしょうか…?


イメージとしては、

最初の状態です

** サーバーからのメッセージ(Four)を受信 **

追加された状態です

といったような感じを目指しています!

###該当のソースコード

//Main.java package sample; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage Stage) throws Exception{ Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); Stage.setTitle("Hello World"); Stage.setScene(new Scene(root, 300, 275)); Stage.show(); } public static void main(String[] args) { launch(args); } /* ※受信処理については省略します。 サーバーからのメッセージを受信した際に動くメソッド(引数はメッセージの内容) ControllerクラスのaddListView(メッセージの内容)を呼び出す。 } */ }
//Controller.java package sample; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ListView; import java.net.URL; import java.util.ResourceBundle; public class Controller implements Initializable { @FXML ListView list; @Override public void initialize(URL location, ResourceBundle resources) { list.getItems().add("One"); list.getItems().add("Two"); list.getItems().add("Three"); } //呼び出されて、listに対して追加を行うメソッドです public void addListView(String Message) { list.getItems().add(Message); } }
<!-- sample.fxml --> <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.ListView?> <?import javafx.scene.layout.GridPane?> <GridPane alignment="center" hgap="10" vgap="10" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.112" fx:controller="sample.Controller"> <children> <ListView fx:id="list" prefHeight="200.0" prefWidth="200.0" /> </children> </GridPane>

###補足情報(言語/FW/ツール等のバージョンなど)
Java SE8
IntelliJ IDEA Community Edition 2017.1.5 x64

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

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

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

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

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

guest

回答2

0

ベストアンサー

FXMLLoader loader = new FXMLLoader(getClass....)
.
.
.
Controller contoller = loader.getController();
controller.addListView(str);

見たいな感じてす

投稿2017/08/01 08:58

.Won

総合スコア66

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

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

yogurt

2017/08/01 11:34

ありがとうございます!無事に追加を行うことが出来ました!
.Won

2017/08/01 11:52

あとは質問を完了してもらっていいですか
guest

0

list.getItems().add("One");
list.getItems().add("Two");
list.getItems().add("Three");

と同じようにadd("文字列");すれば追加されます。
例えばString型変数strに"Four"が入っているとすると

list.getItems().add(str);

でリストにstrの内容が入りますよ

投稿2017/07/30 05:29

.Won

総合スコア66

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

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

yogurt

2017/07/31 15:22

回答ありがとうございます! 大変失礼いたしました!質問に対しての説明が足りていませんでした… 今回のこのソースの場合ですと、MainクラスからControllerクラスのaddListView(String Message) メソッドをどのように呼べばいいのかが分からないのです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問