Область столбца-заполнителя полосы прокрутки в стиле TableView

Я не смог найти способ стилизовать (установить цвет фона) области столбца-заполнителя, которая появляется при появлении (вертикальной) полосы прокрутки.

Я говорю об этой части:

Это должно быть возможно с помощью CSS или стиля кода. Я создал этот MRE:

record Person(String name, int age) {
}

@Override
public void start(Stage stage) {
    TableView<Person> test = new TableView<>();
    test.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);

    // Create columns
    TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
    nameColumn.setCellValueFactory(p -> new SimpleStringProperty(p.getValue().name));

    TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
    ageColumn.setCellValueFactory(person -> new SimpleIntegerProperty(person.getValue().age).asObject());

    test.getColumns().addAll(nameColumn, ageColumn);
    ObservableList<Person> data = FXCollections.observableArrayList(
            new Person("John Doe", 30),
            new Person("Jane Doe", 28),
            new Person("Michael Smith", 35),
            new Person("Emma Johnson", 22),
            new Person("Olivia Williams", 27),
            new Person("Noah Brown", 31),
            new Person("Liam Jones", 29),
            new Person("Mason Garcia", 26),
            new Person("Lucas Miller", 24),
            new Person("Ethan Davis", 32),
            new Person("Ava Martinez", 21),
            new Person("Sophia Rodriguez", 25)
    );
    test.setItems(data);

    test.setMinHeight(500);
    stage.setScene(new Scene(test));
    stage.show();
}

К вашему сведению (и это может не соответствовать вашим требованиям): если вы хотите стилизовать больше, чем просто наполнитель в заголовке, вы можете рассмотреть возможность использования темы javafx, например. установив базовый цвет -fx.

jewelsea 24.06.2024 23:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ссылка на CSS для TableView предполагает, что вы, возможно, ищете filler, Region, используемый column-header-background. Вариант этого примера иллюстрирует эффект:

Код JavaFX:

table.getStylesheets().add("sample.css");

образец.css

.table-view .column-header-background .filler {
    -fx-background-color: red;
}

Похожие варианты использования можно найти здесь. Для справки, добавление sample.css к вашему фрагменту дает сопоставимый результат:

ТаблицаFiller.java

import javafx.application.Application;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class TableFiller extends Application {

    record Person(String name, int age) {}

    @Override
    public void start(Stage stage) {
        TableView<Person> test = new TableView<>();
        test.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_ALL_COLUMNS);
        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(p -> new SimpleStringProperty(p.getValue().name));
        TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
        ageColumn.setCellValueFactory(person -> new SimpleIntegerProperty(person.getValue().age).asObject());
        test.getColumns().addAll(nameColumn, ageColumn);
        ObservableList<Person> data = FXCollections.observableArrayList(
            new Person("John Doe", 30),
            new Person("Jane Doe", 28),
            new Person("Michael Smith", 35),
            new Person("Emma Johnson", 22),
            new Person("Olivia Williams", 27),
            new Person("Noah Brown", 31),
            new Person("Liam Jones", 29),
            new Person("Mason Garcia", 26),
            new Person("Lucas Miller", 24),
            new Person("Ethan Davis", 32),
            new Person("Ava Martinez", 21),
            new Person("Sophia Rodriguez", 25)
        );
        test.setItems(data);
        test.getStylesheets().add("sample.css");
        stage.setScene(new Scene(test));
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Другие вопросы по теме