Как убрать свечение по умолчанию для кнопки JavaFX (если выбрано)? - PullRequest
46 голосов
/ 23 мая 2011

Я пытаюсь убрать свечение границы (см. Скриншот ниже), которое появляется по умолчанию при нажатии кнопки JavaFX:

The blue border is the default styling by JavaFX for when the the button is selected

Я также хочу сделать это с помощью CSS, а не декларативно из основного скрипта JavaFX. Однако у меня возникают проблемы с выяснением, какое свойство CSS мне нужно использовать (например, установить 0?) Для удаления этой границы.

Ответы [ 5 ]

74 голосов
/ 01 апреля 2013

Чтобы удалить отображение кольца фокусировки из любого элемента управления из кода:

control.setStyle("-fx-focus-color: transparent;");

Чтобы удалить кольцо фокусировки для всех элементов управления, примените таблицу стилей:

.root { -fx-focus-color: transparent; }

Чтобы удалить толькокольцо для всех кнопок, используйте:

.button { -fx-focus-color: transparent; }

Я считаю настройку атрибута -fx-focus-color более прямой, чем полагаться на какую-то странную комбинацию вставок для удаления кольца фокусировки.

Кроме того, вы можете использовать ту же настройку, чтобы изменить кольцо фокусировки на другой цвет, например -fx-focus-color: firebrick.

Обновление 20 января 2015 г.

JavaFX 8 поставляется с новой таблицей стилей агента пользователя по умолчанию ( modena ).Эта новая таблица стилей агента пользователя поставляется с дополнительным параметром для выделения фокуса: -fx-faint-focus-color.Для приложений Java 8 необходимо установить прозрачность -fx-focus-color и -fx-faint-focus-color, чтобы удалить все следы кольца фокусировки.См. Ответ good4m на этот вопрос.

Обновление 10 декабря 2015 г.

Если вы установите прозрачные цвета фокусировки, как ранее рекомендовано в этом ответе, для некоторых элементов управления выможет видеть некоторую тонкую разницу между тем, когда контроль сфокусирован, а когда - нет.Для многих приложений это не будет проблемой, и будет достаточно установить прозрачные цвета фокуса.

Для получения дополнительной информации и альтернативных решений просмотрите ответ James_D на Удалить синюю рамку из поля ввода JavaFX и пост в блоге Дженса Детера о Как избавиться от выделения фокуса в JavaFX .Имейте в виду, что ссылка на блог Дженса Детера, к сожалению, имеет несколько раздражающих всплывающих окон.

58 голосов
/ 19 января 2015
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
19 голосов
/ 09 ноября 2013

Есть несколько способов сделать это. Вы можете попробовать все это.

button.setStyle("-fx-focus-color: transparent;");

или

.button{
    -fx-focus-color: transparent;
}

или

.button:focused{
     -fx-focus-color: transparent;
}
15 голосов
/ 04 марта 2015

Если вы хотите удалить это кольцо фокусировки в JavaFX 8, перепишите селектор: focus с помощью стиля селектора .button из modena.css.

.button:focused {
    -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; 
    -fx-background-insets: 0, 1, 2;
    -fx-background-radius: 5, 4, 3;
}
8 голосов
/ 01 апреля 2013

Ответ от Stelios Adamantidis является правильным, то есть

.button:focused {
  -fx-background-insets: 0, 0, 1, 2;
}


Вот мое объяснение:

Напримеропределение

-fx-background-color: red, green, deepskyblue, blue;

, по-видимому, определяет четыре слоя цветов фона, с красным в качестве цвета для самого заднего слоя.

Например, определение

-fx-background-radius: 0, 1, 4, 10;

устанавливаетрадиус для всех углов для каждого цветового слоя.Здесь красный слой имеет все углы с радиусом 0, зеленый слой имеет все углы с радиусом 1 и т. Д.

Например, определение

-fx-background-insets: -10, 0, 3, 5;

устанавливаетотступы для цветных слоев.Вы также можете установить отрицательные значения, тогда цвет будет вокруг элемента управления.

Значения по умолчанию для кнопки выглядят примерно так:

.button:focused {
  -fx-background-color: <blueGlowingColor>, <?>, <?>, linear-gradient(to bottom, <?>, <?>);
  -fx-background-insets: -1, 0, 1, 2;
}

Установка первого значения вставок в0 скрывает светящийся цвет за вторым цветом.

Подробнее о JavaFX CSS вы можете найти здесь:
http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...