【问题标题】:How to set value to specific tablecell Index in tableview JavaFx?如何在 tableview JavaFx 中为特定的 tablecell 索引设置值?
【发布时间】:2020-02-05 06:50:31
【问题描述】:

我尝试在特定列索引(单元格)中设置值,如何在 javafx 中执行此操作,我尝试了很多方法,但每次尝试都失败

//First try
productName.setCellValueFactory(new PropertyValueFactory(product.getCode()));

//Second try
name.setCellValueFactory(c-> new SimpleStringProperty(c.getValue().getTestBedName()));

//Thrid try
productCode.setCellValueFactory(new Callback<CellDataFeatures<Product, String>, 
ObservableValue<String>>()
{
    @Override public ObservableValue<String> call(CellDataFeatures<Product,                                 
    {
        return new SimpleStringProperty(c.getValue().getCode());
    }
});

【问题讨论】:

  • 请提供您正在尝试的Minimal, Reproducible Example。这样别人就可以指出你哪里出错了。
  • 我需要在 tableview 的特定列单元格中设置值,例如第一列第一个单元格,逐列填充列单元格,类似于 java swing "table.setValueAt(data, 0, 0) ;"这样我就可以访问单元格索引并为其设置一些值
  • 我认为您来自不同的环境(Swing)并试图在 JavaFX 中应用相同的原则。我相信从 JavaFX 到 Swing 的工作方式不同(我在 Swing 方面没有经验)。但是通过首先了解它的基本控件/概念来构建您的 JavaFX 知识会有所帮助。可能是这个TableView tutorial 对你来说是一个很好的起点..
  • 非常感谢兄弟,终于在本教程中学习了所有javafx基础知识(我有一些)可以这样做吗?
  • 我现在已经读完了网站上的 TableView 章节,感谢您提供这些知识,大多数教程使用 ObservableList 将行添加到表中,我可以找到任何方法直接添加到 TableColumn 单元格吗?提前致谢。

标签: uitableview tableview javafx-8


【解决方案1】:

我们将发布从 Derby 数据库填充的 TableView
我们使用模型视图控制器模式。所以我们可以更新选定行中的一列 或者我们可以从另一个控制器传递一个静态变量,它只是在列中插入值,这里唯一的问题是你需要知道行 id

    TableData.add(new CBModel(rs.getString("ID"),rs.getString("sortDate")
    ,rs.getString("txMonth"),rs.getString("txYear"),rs.getString("txType"),rs.getString("txAmount")
    ,rs.getString("ckNum"),rs.getString("txDesc"),rs.getString("txBalance")));

    }
    PropertyValueFactory<CBModel, String> IDCellValueFactory = new PropertyValueFactory<>("ID");
    colID.setCellValueFactory(IDCellValueFactory);
    PropertyValueFactory<CBModel, String> DateCellValueFactory = new PropertyValueFactory<>("sortDate");
    colTxDate.setCellValueFactory(DateCellValueFactory);
    PropertyValueFactory<CBModel, String> TypeCellValueFactory = new PropertyValueFactory<>("txType");
    colTxType.setCellValueFactory(TypeCellValueFactory);
    PropertyValueFactory<CBModel, String> AmountCellValueFactory = new PropertyValueFactory<>("txAmount");
    colTxAmount.setCellValueFactory(AmountCellValueFactory);
    PropertyValueFactory<CBModel, String> CKNumCellValueFactory = new PropertyValueFactory<>("ckNum");
    colCKNum.setCellValueFactory(CKNumCellValueFactory);
    PropertyValueFactory<CBModel, String> DescCellValueFactory = new PropertyValueFactory<>("txDesc");
    colTxDesc.setCellValueFactory(DescCellValueFactory);
    PropertyValueFactory<CBModel, String> BalanceCellValueFactory = new PropertyValueFactory<>("txBalance");
    colTxBalance.setCellValueFactory(BalanceCellValueFactory);
    // ================================================================
    // colTxDate are the ID's for the tableview columns
    // sortDate  are the Column Names for the Database TABLE CDBalance
    // ================================================================
    colTxDate.setStyle("-fx-alignment: CENTER;");
    colCKNum.setStyle("-fx-alignment:CENTER;");
    colTxType.setStyle("-fx-alignment:CENTER;");
    colTxAmount.setStyle("-fx-alignment: CENTER-RIGHT;");
    colTxBalance.setStyle("-fx-alignment: CENTER-RIGHT;");
    //Collections.sort(TableData, (p1, p2)-> p2.getSortDate().compareToIgnoreCase(p1.getSortDate()));
    Collections.sort(TableData, (p2, p1)-> p1.getID().compareToIgnoreCase(p2.getID()));
    // Line of Code above Sorts Database Columns based on VARIABLE in CBModel
    // Change p2,p1 to sort Ascending or Descending
    if(TableData.size() < 15) {// Format TableView to display Vertical ScrollBar
        table.setPrefWidth(926);
    }else {
        table.setPrefWidth(945);
    }   table.setItems(TableData);
    stmnt.close();  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2017-12-02
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多