2014-09-01 3 views
4

Я хочу добавить цвет в ячейку цвета строк динамически, когда нажата кнопка ADD. Я не могу изменить цвет фона ячейки. См. Изображение для справки. Я не могу этого добиться с помощью кода. Спасибо за помощь.JavaFx Set Tableview Cell Background Color Dynamically

Отрывок добавления значения в таблицу:

 @FXML 
    private void addEntity() { 

     data.add(new Inventory(codeTemp.getText(), articleNameTemp.getText(), Integer.parseInt(amountTemp.getText()), dcTemp.isSelected() ? true:false, stTemp.isSelected()?true:false, Utilities.toRGBCode(colorTemp.getValue()), informationTemp.getText(), data.size()+1)); 
     inventoryTable.setItems(data); 

    } 

enter image description here

ответ

4

ли с помощью обратного вызова на колонке.

 Callback<TableColumn<Inventory, String>, TableCell<Inventory, String>> cellFactory = 
     new Callback<TableColumn<Inventory, String>, TableCell<Inventory, String>>() { 
      public TableCell call(TableColumn p) { 
       TableCell cell = new TableCell<Person, String>() { 
        @Override 
        public void updateItem(String item, boolean empty) { 
         super.updateItem(item, empty); 
         setText(empty ? null : getString()); 
         setStyle("-fx-background-color:"+getString()); 
        } 

        private String getString() { 
         return getItem() == null ? "" : getItem().toString(); 
        } 
       }; 


       return cell; 
      } 
     }; 

enter image description here

+0

У меня аналогичная проблема (точно такой же код на самом деле), однако «элемент» является нулевым все время. Кто-нибудь знает, почему это? – mroesler

+0

забыть о добавлении клеточной фабрики в колонку. Можете ли вы добавить данные в таблицу? –

+0

Да, у меня есть три столбца String, содержащие данные – mroesler