スパゲッティ生産所

コードの走り書きとかメモとか日常のこととか

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の情報を載せることができた。