【问题标题】:display two decimal places of a float in a TableView JavaFx在 TableView JavaFx 中显示浮点数的两位小数
【发布时间】:2020-06-29 23:27:16
【问题描述】:

所以基本上我正在按照 DAO 模式开发这个 Javafx 应用程序...... 我希望花车以 .00 而不是 .0 结尾(代表余额..钱) balance records in tableview with .0

这是我初始化表格视图组件的方式

idC.setCellValueFactory(cellData -> cellData.getValue().idProperty().asObject());
balanceC.setCellValueFactory(cellData -> cellData.getValue().balanceProperty().asObject());
dateC.setCellValueFactory(cellData -> cellData.getValue().dateProperty());
timeC.setCellValueFactory(cellData -> cellData.getValue().timeProperty());

【问题讨论】:

标签: javafx tableview tablecolumn


【解决方案1】:

使用cellFactory 除了你的cellValueFactory(我假设balanceC对于某些类型TableColumn<T, Double>TableColumn<T, Double>T

balanceC.setCellFactory(c -> new TableCell<>() {
    @Override
    protected void updateItem(Double balance, boolean empty) {
        super.updateItem(balance, empty);
        if (balance == null || empty) {
            setText(null);
        } else {
            setText(String.format("%.2f", balance.doubleValue());
        }
    }
});

如果需要,您可以添加货币符号并使用更复杂的格式。

【讨论】:

    【解决方案2】:

    如果您不想添加更多不必要的代码,则不需要 CellFactory。

    首先,将您的TableColumn&lt;XXX,Double&gt; balanceC 更改为TableColumn&lt;XXX,String&gt; balanceC

    然后将您的单元格值工厂更改为:

    balanceC.setCellValueFactory(cellData -> cellData.getValue().balanceProperty().asString("%.2f"));
    

    IMO 的简单和清洁方式。

    就个人而言,当我需要更复杂的单元格时,我会编写自定义 CellFactory,例如:在单元格内混合图像和其他节点。

    【讨论】:

    • 绝对错误 - 列应该代表项目的一个属性,一个单元格负责该属性的视觉表示
    • @kleopatra 我理解你,但是 TableColumn 的 javadoc 说:Type parameters: &lt;S&gt; – The type of the TableView generic type (i.e. S == TableView&lt;S&gt;) &lt;T&gt; – The type of the content in all cells in this TableColumn. 所以类型 T 不必与项目相关。接受的答案也确实适用于字符串 (setText(String.format("%.2f", balance.doubleValue());)
    • @kleopatra 你说a cell is responsible for the visual representation of that property. 但是在接受的答案中,该属性的视觉表示是字符串。那有什么问题呢? (接受的答案是做'setText('string'))。
    • 问题是这个答案放错地方了
    • 什么是合适的地方?我来这里是为了学习和提高我的技能,我只是想帮助别人......如果我违反了一些规则,对不起......
    猜你喜欢
    • 2010-10-08
    • 2018-10-06
    • 2011-09-03
    • 2012-05-22
    • 1970-01-01
    • 2018-02-12
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多