JavaFX:TableView-将选定项列值(字符串)获取到文本字段中
我正在制作一个包含TableView内容的应用程序,我想将每个选定的行单元格数据选择到文本字段中。我从这个问题开始: 但我只能得到这些数据的第一列。我的问题是,我怎样才能得到第二和第三列呢?这是我的密码:JavaFX:TableView-将选定项列值(字符串)获取到文本字段中,javafx,Javafx,我正在制作一个包含TableView内容的应用程序,我想将每个选定的行单元格数据选择到文本字段中。我从这个问题开始: 但我只能得到这些数据的第一列。我的问题是,我怎样才能得到第二和第三列呢?这是我的密码: table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue o
table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue observableValue, Object oldValue, Object newValue) {
if (table.getSelectionModel().getSelectedItem() != null) {
TableViewSelectionModel selectionModel = table.getSelectionModel();
ObservableList selectedItem = selectionModel.getSelectedCells();
TablePosition getName = (TablePosition) selectedItem.get(0);
Object val1 = getName.getTableColumn().getCellData(newValue);
name.setText("" + val1);
}
}
});
当选择模型设置为单选时,将使用“选定项”属性,因此可以定义行工厂
Object cellItem = cell.getTableRow().getItem();
这将为您提供表中的行项目。所以您可以这样做
我希望下面的代码是为你工作
table.setRowFactory(tv -> {
TableRow<DataType> row = new TableRow<>();
row.setOnMouseClicked(event -> {
if (!row.isEmpty()) {
DataType clickedRow = row.getItem();
TableViewSelectionModel selectionModel = table.getSelectionModel();
ObservableList selectedItem = selectionModel.getSelectedCells();
TablePosition getName = (TablePosition) selectedItem.get(0);
Object val1 = getName.getTableColumn().getCellData(clickedRow);
name.setText("" + val1);
System.out.println("selected :" + val1);
}
});
return row;
});
table.setRowFactory(电视->{
TableRow行=新TableRow();
row.setOnMouseClicked(事件->{
如果(!row.isEmpty()){
数据类型clickedRow=row.getItem();
TableViewSelectionModel selectionModel=table.getSelectionModel();
ObservableList selectedItem=selectionModel.getSelectedCells();
TablePosition getName=(TablePosition)selectedItem.get(0);
Object val1=getName.getTableColumn().getCellData(单击显示);
name.setText(“+val1”);
System.out.println(“所选:“+val1”);
}
});
返回行;
});
侦听器方法中的newItem
是表示表中整行的对象
只要正确地键入change listener,就可以访问该行中的所有数据。也就是说,假设你定义了
TableView<T> table ;
只需使用以下代码: 重要提示:请注意,此方法应在TableView的“鼠标点击”事件中实现,请查看下图以供参考:
整数索引=-1;
@FXML
私有void showRowDataInTextFields()
{
index=tableViewName.getSelectionModel().getSelectedIndex();
如果(索引)
table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<T>() {
@Override
public void changed(ObservableValue<? extends T> observableValue, T oldValue, T newValue) {
// now just call methods on newValue to get the data you need...
}
});
Integer index = -1;
@FXML
private void showRowDataInTextFields()
{
index = tableViewName.getSelectionModel().getSelectedIndex();
if (index <= -1)
{
return;
}
textBoxName.setText(column_Name.getCellData(index)); // used for columns which has only strings
textBoxNameWithNumber.setText(column_Name.getCellData(index).toString()); // use this one for columns which contains numbers
}