javafx-2, удалить выделение фокуса с помощью CSS

Я хочу убрать синие границы, что surronds TableView, когда она ориентирована.

enter image description here

Я зарегистрировался в Каспийском море.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;
}