読者です 読者をやめる 読者になる 読者になる

スパゲッティ生産所

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

Nodeに任意の情報をのせて後から利用する話

JavaFX

ListView上には任意のNodeがのせられますが、右クリックしてあるActionを実行するときに、選択したNodeの情報を取得したい場合があ ります。その時にはset/getUserdata(Object)というメソッドを利用することでNodeに任意の情報を結びつけることができます。

public class StageController{
   
    @FXML
    private ListView<Label> testview;

    @FXML
    private void setData(Object obj){
        Label label = new Label();
        label.setText(obj.getText());
        label.setUserData(obj);
        testvew.getItems().add(label);
    }
  
    @FXML
    private void getData(){
        MultipleSelectionModel<Label> model = testview.getSelectionModel();
        Object object = (Object)model.getSelectedItem().getUserData();

    }
}


現在作っているTwitterのクライアントでは、Timeline上のTweetへの返信などに利用しています。
これを見つけるまではObjectを保持するArrayListを別に作っておいてIndexで情報を引き出す形にしていましたが、こっちだと ArrayListとListViewの内容がずれたりする心配がないのでこっちの方がいいと思います。