35

TableViewJavaFXで選択したアイテムを取得するにはどうすればよいですか?

私は現在使用しています

ObservableList selectedItems = taview.getSelectionModel().getSelectedItems();

しかし、それは選択モデルで選択された1つのアイテムを返しません。

4

7 に答える 7

90

という名前のデータ モデル クラスがあるとしますPerson。こちらです:

Person person = taview.getSelectionModel().getSelectedItem();
System.out.println(person.getName());    

キャストを避けるために、型引数として aTableViewを取る必要があることに注意してください。Person

@FXML
private TableView<Person> taview;

また

TableView<Person> taview = new TableView<>();

行が選択されると、1 つのPersonインスタンスが返されます。次に、そのインスタンスで必要なことを行います。

于 2013-06-30T10:25:37.833 に答える
9
    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 セルから選択した値を取得できます。

ありがとう..

于 2014-02-26T09:19:58.100 に答える
2

@プラニッシュレス

@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);
    }
});
于 2016-04-06T09:38:52.627 に答える