Стиль JavaFX ComboBox, когда фокус и выбранный элемент - PullRequest
0 голосов
/ 25 сентября 2018

Я пытался удалить комбобокс.По сути, я хочу, чтобы он был полностью прозрачным с отображением только текста и стрелок.Я справился с этим, выполнив:

.agent-status-combo .arrow-button, .agent-status-combo .arrow-button:hover {
    -fx-background-color: transparent, transparent, transparent, transparent;
}
.agent-status-combo, .agent-status-combo:hover, agent-status-combo:focused, .agent-status-combo:showing, .agent-status-combo:selected, .agent-status-combo:filled  {
    -fx-font: 14px "Roboto";
    -fx-background-color: transparent, transparent, transparent, transparent;
}
.agent-status-combo:hover > .arrow-button {
    -fx-background-color: transparent, transparent, transparent, transparent;
}
.agent-status-combo .arrow {
    -fx-background-color: #FFFFFF;
}

.agent-status-combo .cell, .agent-status-combo .cell:selected, .agent-status-combo .cell:focused, .agent-status-combo .cell:selected:filled, .agent-status-combo .cell:filled:selected, .agent-status-combo .cell:focused:selected {
    -fx-background-color: transparent, transparent, transparent, transparent; 
    -fx-text-fill: white;
}

.agent-status-combo .list-cell:selected, .agent-status-combo .list-cell:focused, .agent-status-combo .list-cell:selected:filled, .agent-status-combo .list-cell:filled:selected, .agent-status-combo .list-cell:focused:selected {
    -fx-background-color: transparent, transparent, transparent, transparent; 
}

Как вы можете видеть из перебора селекторов, у меня есть проблема.Я не могу заставить работать все эти прекрасные правила, когда Combo сфокусирован ... Он просто возвращается к стилю по умолчанию.

Кто-нибудь сталкивался с этим?

Ответы [ 2 ]

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

Отказ от фокусировки решил проблему.Правда, он не позволяет использовать tab для навигации по пользовательскому интерфейсу, но это не проблема.

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

Вы можете использовать jfoenix.jar для этой цели.Просто установите его в компоновщик сцены и ваш проект.Тогда вы можете использовать его компоненты, такие как поле со списком и все.После выбора поля со списком, чтобы сделать его прозрачным, вы можете использовать следующий пример кода: .jfx-combo-box{ -jfx-focus-color: transparent; -jfx-unfocus-color: transparent; } .jfx-combo-box:focused{ -fx-background-color: red; } .jfx-combo-box:selected{ -fx-background-color: red; }

...