JavaFX TableView如何获取单元格的数据?

12

我正在使用这种方法来获取整个对象。

tableView.getSelectionModel().getSelectedItem()

我该如何从单个单元格获取数据? enter image description here
我的意思是像获取S20BJ9DZ300266这样的字符串?

7个回答

20

假设您知道已选择某些内容,您可以执行以下操作:

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();

1
真棒,它救了我。 - I.Tyger

4
假设您尚未选择任何行,但知道您想要的位置和内容...
// 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);

0
如果您正在使用场景构建器,请为特定列添加一个“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
table.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue == null) {
                selected.setText("");
                return;
            }
                       System.out.println(newValue.getId());
        });

注意: "getId" 是您的“获取”列,而“table”是您的表视图名称。

不仅仅是贴代码,尝试解释问题出在哪里以及如何解决这个问题。 - davejal

0

问题已经解决。我获取了字符串,例如"[1, proveedor1, 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

你可以使用这段代码,我想它会工作的。

String a=personTable.getColumns().get(0).getCellObservableValue(0).getValue().toString(); 
System.out.println("value"+a);

0
我正在使用类似这样的东西向表中添加数据:
ObservableList<Artikl> data = FXCollections.observableArrayList();
data.add(new Artikl("Some String data"));

Artikl是一组设置器和获取器的类。

public class Artikl {
private String KAT;
public Artikl(String kb)
{
   this.KAT=kb;
}

public String getKAT()
{
    return KAT;
}
public void setKAT(String kb)
{
    KAT=kb;
}
}

然后,我使用以下代码将其获取回来:

ObservableList<Artikl> data = tableName.getItems();
for(int i=0;i<data.size();i++)
{
System.out.println(data.get(i).getKAT());
}

这将打印所有内容。要获取选定的项目:

System.out.println(data.get(tableName.getSelectionModel().getSelectedIndex()).getKAT());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接