###前提・実現したいこと
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

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/01 11:34
2017/08/01 11:52