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

JavaFx在表列上使用带Double的字符串

郎经纶
2023-03-14
问题内容

我有一个名为“产品”的类,具有双重属性“价格”。我将其显示在表格视图的表格列中,但我想显示格式化的价格-“ US $ 20.00”,而不仅仅是“
20.00”。

这是我用于填充表格视图的代码:

priceProductColumn.setCellValueFactory(cellData -> cellData.getValue().priceProperty());

我尝试了所有方法:使用priceProperty具有的toString方法等将返回值转换为字符串,但似乎不起作用。

我需要绑定类似事件吗?


问题答案:

使用cellValueFactory它来确定所显示的数据。单元格值工厂基本上是一个函数,该函数接受一个CellDataFeatures对象并返回ObservableValue要在表单元格中显示的值的包装。通常,您希望调用getValue()CellDataFeatures对象以获取该行的值,然后从该对象中检索属性,就像在已发布的代码中所做的一样。

使用a
cellFactory确定如何显示这些数据。该cellFactory是一个函数,它接受一个TableColumn(你通常不需要),并返回一个TableCell对象。通常,您将返回TableCellupdateItem()方法的子类,该子类将根据显示的新值为该单元格设置文本(有时是图形)。在您的情况下,您将价格作为Number,并将其格式化,然后将html" target="_blank">格式化后的值传递给单元格的setText(...)方法即可。

值得阅读相关的Javadocs:,TableColumn.cellFactoryProperty()还可以Cell进行单元格和单元工厂的一般性讨论。

priceProductColumn.setCellValueFactory(cellData -> cellData.getValue().priceProperty());

priceProductColumn.setCellFactory(col -> 
    new TableCell<Product, Number>() {
        @Override 
        public void updateItem(Number price, boolean empty) {
            super.updateItem(price, empty);
            if (empty) {
                setText(null);
            } else {
                setText(String.format("US$%.2f", price.doubleValue()));
            }
        }
    });

(我假设priceProductColumn是a TableColumn<Product, Number>Product.priceProperty()返回a DoubleProperty。)



 类似资料:
  • 我正在构建一个计算器,为了让计算器工作,我需要将字符串中的所有整数转换为双数。例如,如果我有一个字符串:3*8 5/2-4,我想将其转换为:3.0*8.0 5.0/2.0-4.0。我该怎么做? 编辑:如果我有这个字符串:3.0*8.0 5.0/2.0-4,我想将他转换为:3.0*8.0 5.0/2.0-4.0

  • 我刚启动JavaFx,有点拘泥于TableView,它显示了每个列的非常长的字符串表示,如: 而我预计细胞中只会出现“大”、“5000”、“3000”。 这是我的模型: fxml: 最后是控制器: 看起来控制器很好,它能够从数据库中获取值并向TableView添加行,但为什么TableView显示属性对象的字符串表示,而不仅仅是显示值? 非常感谢!

  • 我有一个值为-f.e.:。 我想替换这个字符: ,,,,,,,与那些: <代码>>、<代码>>、<代码>l、<代码>o、<代码>s、<代码>z、<代码>c、<代码>n。 这里我的意思是,如果解析器将找到f.e.:char(在第一个列表中是第二个)应该替换为在第二个列表中处于相同位置/位置的char,在本例中是:。 char应替换为char。 char应替换为char。 在我的例子中,要替换的字符列

  • 问题内容: 如果您有一个带有unicode字符的字符串,则可以打印它,并获得未转义的版本: 但是如果我们有一个包含上面字符串的列表并打印出来: 您仍然会获得转义的字符序列。您如何才能使列表的内容不被转义,这可能吗?像这样: 另外,如果字符串是类型,那么您如何与上述相同? 问题答案: 打印字符串时,将获得对象方法的输出- 在这种情况下,该字符串不带引号。列表的方法不同,它创建一个包含打开和关闭的字符

  • 问题内容: 我试图避免使用那么多的if语句和比较,而只使用一个列表,但是不确定如何将其用于: 我希望它是: 任何帮助,将不胜感激。 问题答案: 允许您提供一个字符串元组来测试: 从文档: 返回如果字符串开始用,否则返回。 也可以是要查找的前缀的元组。 下面是一个演示:

  • 我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢