ListViewにFXMLで設計した部品を貼り付ける話
現在JavaFXを用いて作っているアプリケーション(Twitterのクライアント)で、ListViewにTimelineを表示させるために Paneを貼り付けることにした。このPaneは予めFXMLで設計することにしたが、PaneにFXMLをロードした後に情報をのせる方法がわからず 困っていたが、FXMLにgetControllerというメソッドがあるらしいので使ってみた。
public class MainStageController{
@FXML
ListView<AnchorPane> testview;
public void setTest(Status status){
AnchorPane pane = new AnchorPane();
FXMLLoader loader = new FXMLLoader(getClass().getResource("TimelinePane.fxml"));
try {
pane = (AnchorPane)loader.load();
TimelinePaneController controller = loader.getController();
controller.setdata(status);
testview.getItems().add(0,pane);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class TimelinePaneController {
@FXML
Label ScreenName;
@FXML
Label text;
void setdata(Status status){
ScreenName.setText(status.getUser().getScreenName());
text.setText(status.getText());
}
}
このように書くことで、設計したPaneのControllerクラスのインスタンスを取得でき、Paneの情報を載せることができた。