JavaFXのTableView
から選択したアイテムを取得するにはどうすればよいですか?
現在使用しています
ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();
ただし、選択モデルで選択された1つのアイテムは返されません。
では、Person
という名前のデータモデルクラスがあるとします。こちらです:
Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());
TableView
は、キャストを回避するために、型引数としてPerson
を取る必要があることに注意してください。
@FXML
private TableView<Person> taview;
または
TableView<Person> taview = new TableView<>();
行が選択されると、Person
インスタンスを1つ返します。次に、そのインスタンスで必要なことを実行します。
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
//Check whether item is selected and set value of selected item to Label
if(tableview.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = tableview.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("Selected Value" + val);
}
}
});
このコードを使用すると、JAVAFX TABLEVIEWセルから選択した値を取得できます。
ありがとう。
しゅう
以下は、@ Java Manのコードに触発されたセル選択変更リスナー(行が変更されない場合でも)の試みです。
tableView.getSelectionModel().setCellSelectionEnabled(true);
ObservableList selectedCells = tableView.getSelectionModel().getSelectedCells();
selectedCells.addListener(new ListChangeListener() {
@Override
public void onChanged(Change c) {
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(tablePosition.getRow());
System.out.println("Selected Value" + val);
}
});
そのようなTableViewからデータを取得できます
One ItemSelectionの場合
`tableview_obj.getSelectionModel().getSelectedItem().yourgetterobjectname`
およびマルチアイテム選択
tableview_obj.getSelectionModel().getSelectedItems().get(indexNo).yourgetterobjectname