web-dev-qa-db-ja.com

JavaFX TableViewセルのデータを取得する方法は?

私はそのメソッドを使用してオブジェクト全体を取得しています。

tableView.getSelectionModel().getSelectedItem()

単一のセルからデータを取得するにはどうすればよいですか? enter image description here
get S20BJ9DZ300266 as String?

7
sashaaero

何かが選択されていることを知っていると仮定すると、次のことができます

TablePosition pos = table.getSelectionModel().getSelectedCells().get(0);
int row = pos.getRow();

// Item here is the table view type:
Item item = table.getItems().get(row);

TableColumn col = pos.getTableColumn();

// this gives the value in the selected cell:
String data = (String) col.getCellObservableValue(item).getValue();
13
James_D

行を選択していないが、どこで何が必要かはわかっていると仮定します。

// Item here is the table view type:
    Unpaid item = userTable.getItems().get(0);

    TableColumn col = userTable.getColumns().get(3);

    // this gives the value in the selected cell:
    String data = (String) col.getCellObservableValue(item).getValue();
    JOptionPane.showMessageDialog(null, data);
2
Howard J

あなたは私がそれが働いていると思うこのコードを使うことができます

String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString(); 
System.out.println("value"+a);
0
Samer
table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue == null) {
                selected.setText("");
                return;
            }
                       System.out.println(newValue.getId());
        });

注意:「getId」は「get」列であり、「table」はタブルビューの名前です。

0
Rabie Khoualdia

シーンビルダーを使用している場合は、特定の列のOn Edit Commitにメソッドを追加し、コントローラークラスにロジックを追加します。 event.getNewValue()を使用して、ユーザーが入力した新しい値を取得します。例えば。

@FXML
private void UpdateName(TableColumn.CellEditEvent<ModelClass, String> event) {
    ModelClass mc = Table.getSelectionModel().getSelectedItem();
    mc.setName(event.getNewValue());
    System.err.println("new value "+event.getNewValue());
}

編集可能な列を許可する場合にこれを使用します

0

私はそれを解決しました。たとえば、「[1、provedor1、calzado1、Rojo、39、600、2、1200]」という文字列を取得し、最初のセル(id)の部分文字列を取得します。サルド

TablePosition pos = (TablePosition) tableVenta.getSelectionModel().getSelectedCells().get(0);
int index = pos.getRow();
String selected = tableVenta.getItems().get(index).toString();
selected = selected.substring(1, selected.indexOf(","));
System.out.println(selected);
0