2015-08-09 3 views
-1

У меня есть TableView. Я хочу изменить цвет фона строк в соответствии с некоторым условием. Например, если баланс (getBalance()) меньше нуля - установите цвет фона этой строки на красный. Вот мой setCellValueFactory:Изменение цвета фона (или только цвета) строки (javafx)

tc_proj_number.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getId().toString())); 
tc_proj_date.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getValueDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().toString())); 
tc_proj_amount.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getBalance().setScale(2).toPlainString())); 
tc_proj_comment.setCellValueFactory(cellData -> new SimpleStringProperty(cellData.getValue().getComment())); 
+0

Попробуйте найти этот сайт в выше верхней правой области поиска. Чтобы получить более точные результаты, см. «Советы по расширенному поиску» на странице http://stackoverflow.com/search –

ответ

2

Используйте TableColumn#setCellFactory метод.
Попробуйте следующий код (не проверено):

 tc_proj_amount.setCellFactory(column -> { 
       return new TableCell<Account, String>() { 
        @Override 
        protected void updateItem(String item, boolean empty) { 
         super.updateItem(item, empty); 

         if (item == null || empty) { 
          setText(null); 

         } else { 

          setText(item); 

          // Style row where balance < 0 with a different color. 
          BigDecimal balance = new BigDecimal(item); 
          TableRow currentRow = getTableRow(); 
          if (balance.compareTo(BigDecimal.valueOf(0)) <0){ 

            currentRow.setStyle("-fx-background-color: red;"); 

          } 
          else currentRow.setStyle(""); 
         } 
        } 
       }; 
      }); 
+0

. Для чего нужно подставка и пустая стойка? В моем случае он возвращает значение null и false все время – Sher

+0

Извините, все готово. Я удалил SetCellValueFactory и использовал их, и они должны идти вместе. Большое спасибо – Sher

+0

@ kleopatra Хороший улов. Исправлена. См. Правки. Спасибо. – Kachna

Смежные вопросы