javafx-2, удалить выделение фокуса с помощью CSS
Я хочу убрать синие границы, что surronds TableView, когда она ориентирована.
Я зарегистрировался в Каспийском море.css, который для большинства компонентов, таких как Button и TextField, делает что-то вроде:
.table-view:focused {
-fx-background-color: -fx-focus-color,-fx-box-border,-fx-control-inner-background;
-fx-background-insets: -1.4, 0, 1;
-fx-background-radius: 1.4, 0, 0;
/*....*/
-fx-padding: 1; /* 0.083333em; */
}
мой вопрос о CSS, в конце. могу ли я переопределить это pseudoclass
спецификация в моей таблице стилей вместо того, чтобы пытаться превратить цвета в прозрачные?
2 ответов
Да, вы можете. В вашей таблице стилей определите точно такой же селектор CSS со свойствами CSS JavaFX по вашему собственному выбору, как это:
.table-view:focused {
-fx-background-color: red /* or transparent or other preferred color */,-fx-box-border,-fx-control-inner-background;
-fx-background-insets: -1.4, 0, 1;
-fx-background-radius: 1.4, 0, 0;
/*....*/
-fx-padding: 1; /* 0.083333em; */
}
потому что JavaFX 8 имеет новую тему "Модена", но с той же старой проблемой я хочу обновить ответ Улук Бия и дать некоторую дополнительную информацию:
если вы когда-нибудь задумывались, откуда взялся какой-то стиль, вы можете взглянуть на Модену.стиль CSS. Вы можете найти этот файл css в jfxrt.jar, который сам может быть найден в вашем каталоге установки JRE или JDK. На Ubuntu 14.04 JDK home обычно находится под
/usr/lib/jvm/java-8-oracle/
и jfxrt.jar должен быть здесь
/usr/lib/jvm/java-8-oracle/jre/lib/ext
откройте jar-файл и посмотрите в каталоге /com/sun/javafx/scene/control/skin/modena, где вы найдете modena.в CSS
начиная с строки 406 вы можете увидеть заголовки, как это
/* ==== BUTTON LIKE THINGS ============================================== */
css в этом разделе определяет фон и границу для многих элементов управления и контейнеров. Вам просто нужно найти свой целевой класс. Я покажу его для кнопок в качестве примера: Для класса button следующий css указано
-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
-fx-background-insets: 0 0 -1 0, 0, 1, 2;
по некоторым причинам они не используют границы, но используют несколько фонов, имитирующих границу, как выглядят. Поэтому, если вы хотите удалить только границу, вам нужно настроить свойство background и inset.
наконец, если вы хотите удалить сфокусированный эффект, вы должны переопределить этот css по умолчанию
.button:focused,
.toggle-button:focused,
.radio-button:focused > .radio,
.check-box:focused > .box,
.menu-button:focused,
.choice-box:focused,
.color-picker.split-button:focused > .color-picker-label,
.combo-box-base:focused,
.slider:focused .thumb {
-fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color;
-fx-background-insets: -0.2, 1, 2, -1.4, 2.6;
-fx-background-radius: 3, 2, 1, 4, 1;
}
для элементов управления по вашему выбору с определением по умолчанию для фона и вставок сверху. Е. Г. для кнопки:
.button:focused {
-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
-fx-background-insets: 0 0 -1 0, 0, 1, 2;
}