当前位置: 首页 > 面试题库 >

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

商飞航
2023-03-14
问题内容

我有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()));
        }
    }
});


 类似资料:
  • 我有一个类文件Nepokretnost。java中的构造函数如下所示: 此外,我还为每个类字段提供了带有列的TableView。我的问题是双字段“povrsina”。我想从TextField设置它。 我将名为txtPovrsina的TextField的内容发送给双变量: 然后将所有字段放入TableView: 一切都很好,但我想要一些我不知道如何设置的应用程序行为。现在,当我在TextField中

  • 问题内容: 我想显示: 如 和: 如 不管小数点的长度或是否有任何小数位,我都希望显示带有2个小数位的a,并且我想以一种有效的方式来做到这一点。目的是显示货币值。 例如, 问题答案: 我想您可能正在使用模块中的对象?(如果您需要精确到小数点后两位精确到两位数且任意大的数字,那么绝对应该如此,这就是您的问题标题所暗示的……) 如果是这样,文档的“ 十进制常见问题解答” 部分将包含一个问题/答案对,这

  • 问题内容: 如何从FXML设置TableView的调整大小策略?我这样累了,但是不起作用: 问题答案: 要使用fxml为tableview设置columnresize策略,必须使用标记。这将在javafx 2.2及更高版本上工作。 参考: 使用fxml定义TableView columnResizePolicy属性

  • 问题内容: 我要显示: 和: 不管小数点的长度或是否有小数位,我都希望显示一个带有2个小数位的,并且我想以一种有效的方式做到这一点。目的是显示货币值。 例如, 问题答案: 我想你可能正在使用模块中的对象?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……) 如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用: 问:在具有

  • 问题内容: 当我从数据库中检索数据时,我碰壁了。我设法将列名放入我的表中,这可以正常工作并且应该工作。 当我尝试添加行时发芽,我发现没有数据添加到我的tableview中,我试图从代表单个行的字符串数组中添加行。我不知道用户会用他的查询请求多少列以及如何大表是这样,所以我不能创建行对象和代表每一列的所有属性。 问题 是如何用从数据库中成功检索到的行填充String表中的行,并以String []的

  • 问题内容: 有什么方法可以将一些其他数据传递到将用于显示在图表“工具提示”中的系列对象? 例如 在这里,我们只能对系列使用series.name,this.x和this.y。可以说我需要随数据集一起传递另一个动态值,并且可以通过系列对象进行访问。这可能吗? 谢谢大家。 问题答案: 是的,如果您按照如下所示设置系列对象,每个数据点都是一个哈希,则可以传递额外的值: 在工具提示中,您可以通过传入的对象