java - 在 TableView 中显示最多两位小数的 DoubleProperty

标签 java javafx

我在显示小数点后第二个 doubleProperty 时遇到问题。

粗略的布局如下所示:

public static void main(String[] args) {
    private TableView<myType> myTable;
    private TableColumn<myType, Double> myCol;

public class myObject {
    .....
    DoubleProperty myDouble;
    ....

    public doubleProperty getPropertyMyDouble() {
        return myDouble;
    }

    public void setMyDouble(double d) {
        myDouble.set(d)
    }
}

然后我用以下内容填充该列:

   ...
   myCol.setCellValueFactory(cellData ->cellData.getValue().getPropertyMyDouble().asObject());
   ...

现在我的问题是:如果我按原样保留 setMyDouble 方法,myCol 会充满数字 很多小数。我只想要小数点后第二位。

我尝试做的是这样的:

public void setMyDouble(double d) {
        BigDecimal bd = new SimpleDecimalFormat("#.00")
        myDouble.set(Double.parseDouble(bd.format(d));
    }

现在这可以删除小数点后第二个数字,但问题是如果我有一些东西 像 12.00,因为我需要在最后转换为 double(因为 .set() 需要 double)它变成 12.00 进入 12.0.但是,我需要始终保留两位小数。

有什么方法可以将 myDouble 保留为 DoubleProperty(我这样做是因为它可以更轻松地在更改后自动更新表格) 但以 "#.##" 格式显示数据?

我在想也许可以做一些像添加实例变量这样的事情:

StringProperty myDoublePresent;

它只需要 myDouble 并将其转换为字符串,然后以 "#.##" 格式呈现。

但我更喜欢一种可以直接使用 DoubleProperty.

的方法

最佳答案

尝试

myCol.setCellValueFactory(cellData ->
     Bindings.format("%.2f", cellData.getValue().getPropertyMyDouble()));

关于java - 在 TableView 中显示最多两位小数的 DoubleProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31318989/

相关文章:

java - 为什么 List.add(E) 返回 boolean 而 List.Add(int, E) 返回 void?

java - 处理服务或 DAO 中的聚合

JavaFX 和多线程 : IllegalStateException on ObservableList. add()

java - 向Mediaplayer添加音频时出现异常

java - JScrollPane 中的 JPanel 中的 JTextComponent

java - GWT无法实例化接口(interface),但可以实例化抽象类吗?

java - 在一条语句中使用 getGenerateKeys() 从 java 向 Oracle 数据库中插入多行

java - ScrollPane javafx自动滚动(将vvalue设置为1.0)仅滚动到最后一项之前的项目

javafx - 如何在 JavaFx 中的微调器中显示本地时间(小时数)

Javafx Treeview 项目操作事件