javafx从TableView读取数据

时间:2014-03-20 23:00:59

标签: java

我一直在努力完成我的应用程序,这是一个仓库库存管理系统。我有这个我创建的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始终获取第一列单元格中的数据选定的行。

事先感谢你的帮助。

0 个答案:

没有答案