Изменить фон столбца таблицы в TableView, сохранив при этом чередующийся цвет строки?

#java #javafx

#java #javafx

Вопрос:

Мне было интересно, могу ли я добавить «слой» цвета поверх столбца (фон ячейки) без полной потери чередующихся цветов строк, которые уже присутствуют. Я использовал setStyle, и это просто добавляет сплошной цвет.

    TableView<LineItem> table = new TableView<>();

    table.getSelectionModel().setCellSelectionEnabled(true);
    TableColumn<LineItem, String> column1 = new TableColumn<>("Test1");
    column1.setCellValueFactory(cellData -> cellData.getValue().string1Property());
    column1.setEditable(true);

    table.getColumns().add(column1);

    TableColumn<LineItem, String> column2 = new TableColumn<>("Test2");
    column2.setCellValueFactory(cellData -> cellData.getValue().string2Property());
    column2.setEditable(true);

    column2.setCellFactory(e -> new TableCell<LineItem, String>()
    {
        @Override
        public void updateItem(String item, boolean empty)
        {
            super.updateItem(item, empty);
            setStyle("-fx-background-color: green;");
            if (item == null || empty)
            {
                setText(null);
            } else
            {
                setText(item);

            }
        }
    });

    TableColumn<LineItem, String> column3 = new TableColumn<>("Test3");
    column3.setCellValueFactory(cellData -> cellData.getValue().string2Property());
    column3.setEditable(true);
  

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться своим кодом?

2. @SamuelPhilipp Готово

3. Пожалуйста, поделитесь полной конфигурацией таблицы 😉

4. @SamuelPhilipp Готово

Ответ №1:

Вы можете просто использовать полупрозрачный цвет в своем TableCell :

 setStyle("-fx-background-color: rgba(0, 128, 0, 0.3);");
  

Результатом является:

ячейки результата

Кроме того, вы можете изменить чередующийся цвет с помощью:

 table.setStyle("-fx-control-inner-background-alt: #777777;");
  

Комментарии:

1. ИДЕАЛЬНО, это то, что мне было нужно. Спасибо.