我一直在努力完成我的应用程序,这是一个仓库库存管理系统。我有这个我创建的tableView,我需要用户能够选择一行,然后在textfields中显示一些这些数据。我使用了一个改变监听器,但它没有给出我想要的东西。该选择特定于该行的哪个单元格被拼写。我不想要这个。无论单击哪个单元格,我都希望始终从所选行的相同列中获取数据。
看看我的代码
///表格提供的产品和数量 最终标签标签=新标签(“产品和可用数量”); label.setFont(new Font(“Arial”,20)); label.setId( “listHeader”);
final TableView<prodreq> reqProd=new TableView<>();
reqProd.setId("prodt");
final ObservableList<prodreq>datareq=
FXCollections.observableArrayList();
reqProd.setPrefHeight(3*(gH/4.5));
reqProd.setEditable(false);
TableColumn itemcode=new TableColumn("Item Code");
itemcode.setPrefWidth(2*((0.75*gW)/5-((0.75*gW)/5)/2));
itemcode.setCellValueFactory(new PropertyValueFactory<prodreq,String>("itemcode"));
TableColumn item=new TableColumn("Item");
item.setPrefWidth((0.75*gW)/5+((0.75*gW)/5)/2);
item.setCellValueFactory(new PropertyValueFactory<prodreq,String>("item"));
TableColumn qty=new TableColumn("Qty 1");
qty.setPrefWidth((0.75*gW)/5-((0.75*gW)/5)/2);
qty.setCellValueFactory(new PropertyValueFactory<prodreq,String>("qty"));
TableColumn qty2=new TableColumn("Qty 2");
qty2.setPrefWidth((0.75*gW)/5-((0.75*gW)/5)/2);
qty2.setCellValueFactory(new PropertyValueFactory<prodreq,String>("qty"));
TableColumn category=new TableColumn("Category");
category.setPrefWidth((0.75*gW)/5+((0.75*gW)/5)/2);
category.setCellValueFactory(new PropertyValueFactory<prodreq,String>("category"));
reqProd.getColumns().addAll(itemcode,item,qty,qty2,category);
reqProd.setItems(datareq);
该表工作正常,可以使用DB中的数据填充它。这段代码是我的 听者
{ reqProd.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(reqProd.getSelectionModel().getSelectedItem() != null)
{
TableViewSelectionModel selectionModel = reqProd.getSelectionModel();
ObservableList selectedCells = selectionModel.getSelectedCells();
TablePosition tablePosition = (TablePosition) selectedCells.get(0);
Object val = tablePosition.getTableColumn().getCellData(newValue);
System.out.println("" + val);
}
}
});}
当我运行prog时,输出是我单击的单元格中的数据...但是然后选择整行并且我想要id始终获取第一列单元格中的数据选定的行。
事先感谢你的帮助。