Как изменить цвет текста в строках TableView? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь обновить цвет фона строки и текст в табличном представлении.Но я могу обновить только цвет фона.Но я не могу обновить цвет текста, используя -fx-text-fill.Может ли кто-нибудь помочь.

@FXML
private void initialize(){
 tablename.setRowFactory(tv -> new TableRow<ClassName>()
    {
        @Override
        public void updateItem(ClassName item, boolean empty)
        {
            super.updateItem(item, empty);
            if (item == null)
            {
                setText(null);
                setStyle("");
            }
            else
            {
               if (item.gettest().equals("a") {
                 setStyle("-fx-background-color: #38ee00; -fx-text-fill: green;");
                }
               if (item.gettest().equals("b") {
                 setStyle("-fx-background-color: #efe939; -fx-text-fill: red;");
                }
              }
          }
      });

} 

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Сначала вам нужно получить текущую строку:

 TableRow<CallLogs> currentRow = getTableRow();

После этого вы можете установить цвета, как вы делаете, но в currentRow:

          if (item.gettest().equals("a") {
             currentRow.setStyle("-fx-background-color: #38ee00; -fx-text-fill: green;");
            }
           if (item.gettest().equals("b") {
              currentRow.setStyle("-fx-background-color: #efe939; -fx-text-fill: red;");
            }
0 голосов
/ 25 октября 2018

TableView окрашивает фон его строк из modena.css, поэтому вы можете переопределить это свойство, используя встроенный стиль.Свойство -fx-text-fill устанавливается для TableCell s, и поэтому значения, унаследованные от TableRow, не используются.

Я рекомендую использовать таблицу стилей CSS самостоятельно и применять псевдокласс к строкам

final PseudoClass green = PseudoClass.getPseudoClass("green");
tablename.setRowFactory(tv -> new TableRow<ClassName>() {
    @Override
    public void updateItem(ClassName item, boolean empty) {
        super.updateItem(item, empty);
        boolean gr = (item != null) && item.gettest().equals("a");
        pseudoClassStateChanged(green, gr); 
    }
});

Таблица стилей CSS (должна применяться к TableView, предку или сцене)

.table-row-cell:filled {
    -fx-background-color: #efe939;
}

.table-row-cell:filled:green {
    -fx-background-color: #38ee00;
}

.table-row-cell:filled .table-cell {
    -fx-text-fill: red;
}

.table-row-cell:filled:green .table-cell {
    -fx-text-fill: green;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...