Nodeに任意の情報をのせて後から利用する話
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の内容がずれたりする心配がないのでこっちの方がいいと思います。