java-TableView列数据设置为2个小数位

我有1个类文件Nepokretnost.java,其中的构造函数如下所示:

public Nepokretnost(String tipNepokretnosti, String zona, String pravo, 
        double povrsina, int amortizacija, double osnovica, double kredit, double porez) {
    this.tipNepokretnosti = tipNepokretnosti;
    this.zona = zona;
    this.pravo = pravo;
    this.povrsina = povrsina;
    this.amortizacija = amortizacija;
    this.osnovica = osnovica;
    this.kredit = kredit;
    this.porez = porez; 
}

此外,对于每个类字段,我都有带有列的TableView.我的问题是双字段“ povrsina”.我想从TextField设置它.

我将名为txtPovrsina的TextField的内容发送给double变量:

double dPovrsina;
dPovrsina = Double.parseDouble(txtPovrsina.getText());

然后将所有字段放在TableView中:

ObservableList<Nepokretnost> data = tblTabela.getItems();
    data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(),
            txtPravo,dPovrsina,40,450000.25,2500.00,2500.00));

一切运行良好,但是我想要一些应用程序的行为,但我不知道如何设置.现在,当我在TextField中输入int像25时,TableView列中得到25.0.我希望所有列单元格都精确地有2个小数位.

我试过了:

DecimalFormat df=new DecimalFormat("#.00");
ObservableList<Nepokretnost> data = tblTabela.getItems();
    data.add(new Nepokretnost(cboNepokretnost.getValue().toString(),cboZona.getValue().toString(),
            txtPravo,df.format(dPovrsina),40,450000.25,2500.00,2500.00));

但出现错误“不兼容的类型:字符串不能转换为双精度”

我在Java中仍然是菜鸟,但是我的猜测是格式使String成为字符串,我想输入保持双倍,仅保留2个小数位.像本专栏文章一样,我对其他双重字段也会有同样的问题.

谁能给我一些指示?

解决方法:

您想更改数据在表中的显示方式,而不是更改数据本身.为此,您需要在表格列上设置单元格工厂.就像是

TableView<Nepokretnost> table = new TableView<>();
TableColumn<Nepokretnost, Number> povrsinaCol = new TableColumn<>("Povrsina");
povrsinaCol.setCellValueFactory(cellData -> 
    new ReadOnlyDoubleWrapper(cellData.getValue().getPovrsina()));

povrsinaCol.setCellFactory(tc -> new TableCell<Nepokretnost, Number>() {
    @Override
    protected void updateItem(Number value, boolean empty) {
        super.updateItem(value, empty) ;
        if (empty) {
            setText(null);
        } else {
            setText(String.format("%0.2f", value.doubleValue()));
        }
    }
});
上一篇:在活动屏幕上打开JavaFX应用程序或在多屏幕设置中监视


下一篇:当类型为pair时priority该如何建立