2015-12-09 97 views
0

我想在我的JavaFx應用程序的TableColumn中打印BigDecimal。但我無法正確格式化它。格式化Bigdecimal。 JavaFX

我已經試過這樣:是確定的,它打印1 005 689.56

DecimalFormat df = new DecimalFormat("#,###.00"); 
tc_ma_sell_amount.setCellValueFactory(cellData -> new SimpleStringProperty(df.format(cellData.getValue().getSellAmount()).toString())); 

格式。但是這裏的問題是,當我在應用程序中根據此列對錶進行排序時,它將此值視爲它們是字符串,並且排序不正確。

我做了如下改變:

tc_ma_sell_amount.setCellValueFactory(cellData -> new SimpleObjectProperty<BigDecimal>(cellData.getValue().getSellAmount())); 

這裏,格式也不行。 (1005689.5600),但排序工作正常。爲了使格式正確(「#,###。00」)和排序,我需要改變什麼?

+0

在BigDecimal的源... 公共字符串的toString(){ 字符串SC = stringCache; \t if(sc == null) \t stringCache = sc = layoutChars(true); \t return sc; } – Adam111p

回答

3

我自己做的。

tc_ma_sell_amount.setCellFactory(param -> { 
      return new TableCell<ConversionDeals, BigDecimal>(){ 
       @Override 
       protected void updateItem(BigDecimal item, boolean empty) { 
        super.updateItem(item, empty); 
        if(empty || item == null){ 
         setText(""); 
        } else { 
         setText(df.format(item)); 
        } 
       } 
      }; 
     });