JavaFX - Как удалить полосы ListView и TableView?

Я добавляю JavaFX ListViews и TableViews в свое приложение в стиле по умолчанию.

Нечетные строки получили белый фон, а четные строки получили серый фон. Мне не нравятся эти полосы, особенно на безлюдных рядах.

Я попробовал следующие настройки CSS в моем ListView с помощью fxid:list_PayMethod, но не помогает.

(эта страница не распознает fxid как часть кода, поэтому обратите внимание, что он не находится в сером поле.)

#list_PayMethod {

    .list-cell:odd {
        -fx-padding: 0px;
        -fx-control-background: #F4F4F4;
        -fx-control-inner-background: #F4F4F4;
    }

    .list-cell:even {
        -fx-padding: 0px;
        -fx-control-background: #F4F4F4;
        -fx-control-inner-background: #F4F4F4;
    }

    .list-view:focused .list-cell:focused:odd {
        -fx-padding: 0px;
        -fx-control-background: #F4F4F4;
        -fx-control-inner-background: #F4F4F4;
    }

    .list-view:focused .list-cell:focused:even {
        -fx-padding: 0px;
        -fx-control-background: #F4F4F4;
        -fx-control-inner-background: #F4F4F4;
    }
}

Есть ли способ установить все, чтобы писать или все серые?

Спасибо!


person katana    schedule 15.01.2020    source источник


Ответы (1)


Замените -fx-control-background на -fx-background-color и этого должно быть достаточно.

.list-cell {
    -fx-background-color: #F4F4F4;
}
person M. S.    schedule 15.01.2020
comment
Убедитесь, что вы используете правильный идентификатор. Что такое list_PayMethod? это ваш контроллер или просто ListView? - person M. S.; 15.01.2020
comment
Вы изменили что-нибудь еще? - person M. S.; 15.01.2020
comment
Я удалил #list_PayMethod {}, после чего он заработал, но это создало еще одну проблему, потому что я не хочу, чтобы это затрагивало поля со списком. если fxid ListView, который я хочу настроить, — это list_PayMethod, какой должен быть код? - person katana; 15.01.2020
comment
Вы должны использовать класс стиля. list.getStyleClass().add("one-color-list");, а затем в файле css: .one-color-list .list-cell { -fx-background-color: #F4F4F4; } - person M. S.; 15.01.2020
comment
Еще один вопрос... Раньше при выборе строки фон становился синим, а текст белым. Но теперь, потому что фон всегда серый. Белый текст становится трудно читать. Я пытаюсь добавить -fx-text-fill: black; но цвет шрифта остается белым при выборе - person katana; 15.01.2020
comment
Вы должны установить это: .list-cell:filled:selected - person M. S.; 15.01.2020
comment
На самом деле мой listView предназначен для содержания объектов listCell. Я попробовал ваше предложение, но это не удалось... Думаю, мне нужно потратить некоторое время на css. Что ж, я нашел обходной путь и заменил все элементы управления Label на элементы управления Text. Потому что цвет текста метки будет меняться при изменении состояния выбора, а текст - нет. Мое приложение теперь работает отлично. Большое спасибо за вашу большую помощь. - person katana; 15.01.2020
comment
Сегодня по какой-то причине я добавил поле со списком в listCell и обнаружил, что редактирование свойств списка сильно влияет на его содержимое... Стиль поля со списком сильно пострадал, и он выглядит ужасно... Есть ли способ просто установить фон списка, но оставить поле со списком только в listCell? - person katana; 17.01.2020
comment
Как я упоминал в предыдущем комментарии, вы должны указать класс стиля для списка, который вы хотите стилизовать, и использовать этот стиль в css: .one-color-list .list-cell { -fx-background-color: #F4F4F4; }. Таким образом, ваш ComboBox не пострадает. - person M. S.; 17.01.2020
comment
Я уже сделал это..... ComboBoxes за пределами listView не затрагиваются. Но затронуты comboBox внутри listCells. Поскольку listCells находятся внутри listView - person katana; 17.01.2020
comment
Я сделал несколько изображений, чтобы проиллюстрировать ситуацию ссылка ссылка ссылка - person katana; 17.01.2020
comment
Понятно... если это ваш случай, используйте id вместо стиля класса: #someList { -fx-background-color: #F4F4F4; }. - person M. S.; 18.01.2020
comment
ComboBox внутри ListCells по-прежнему будут затронуты, потому что ListCells находятся внутри ListView. Я думаю о добавлении другого стиля в поле со списком, чтобы переопределить настройку, которую я сделал в ListView. Но я не могу найти настройки по умолчанию обычного ComboBox - person katana; 18.01.2020
comment
Да, на самом деле вы можете назначить класс для этих ComboBox и не забудьте использовать ключевое слово !important, чтобы цвет ComboBox переопределял цвет, исходящий от ListView - person M. S.; 18.01.2020
comment
По умолчанию для стиля Modena используется -fx-background-color: transparent;. - person M. S.; 18.01.2020
comment
Знаете ли вы настройки по умолчанию для поля со списком? Я попробовал несколько разных настроек, но это только сделало их более странными и повлияло на средство выбора даты. - person katana; 18.01.2020
comment
Проверьте modena.css и попытайтесь выяснить, чего не хватает в вашем файле класса. - person M. S.; 18.01.2020
comment
Спасибо за ваш совет. Я просматриваю файл modena.css и ищу все, что относится к комбинированным и списковым ячейкам, переопределяю их одну за другой и определяю причину. Сейчас это полностью исправлено. - person katana; 18.01.2020
comment
@katana рада это слышать - person M. S.; 20.01.2020