Подтвердить что ты не робот

Как удалить стандартное свечение границы кнопки JavaFX (если выбрано)?

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

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

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

4b9b3361

Ответ 1

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

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 и сообщение в блоге Jens Deter о Как избавиться от фокуса в JavaFX. Имейте в виду, что ссылка на блог Jens Deter, к сожалению, вызывает некоторые раздражающие всплывающие окна.

Ответ 2

-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;

Ответ 3

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

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

или

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

или

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

Ответ 4

Если вы хотите удалить это кольцо фокусировки в JavaFX 8, перепишите селектор: focus с помощью стиля .button selector из 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;
}

Ответ 5

Ответ от 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