Как удалить свечение границы по умолчанию кнопки JavaFX (при выборе)?
Я пытаюсь удалить свечение границы (см. скриншот ниже), которое появляется по умолчанию, когда выбрана кнопка JavaFX:
Я также хочу сделать это с помощью CSS, а не декларативно из основного сценария JavaFX. Тем не менее, у меня возникли проблемы с выяснением, какое свойство CSS мне нужно использовать (er, установлено в 0?) для того, чтобы удалить границу.
5 ответов
чтобы удалить дисплей кольца фокусировки из любого элемента управления из кода:
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 поставляется с новой таблицей стилей агента пользователя по умолчанию (Модены). Эта новая таблица стилей агента пользователя поставляется с дополнительной настройкой для основных моментов фокусировки:-fx-faint-focus-color
. Для приложений Java 8 необходимо установить оба -fx-focus-color
и -fx-faint-focus-color
прозрачным, чтобы удалить все следы фокуса. См. ответ good4m на этот вопрос.
Обновление Dec 10, 2015
если вы только установите цвета фокуса на прозрачный, как ранее рекомендовалось в этом ответе, для некоторых элементов управления вы можете увидеть некоторое тонкое различие между тем, когда элемент управления сфокусирован и когда это не так. Для многих приложений это не будет проблемой, и установка цветов фокуса на прозрачный будет достаточной.
для получения дополнительной информации и альтернативных решений просмотрите ответ James_D на удалить синюю рамку с входа JavaFX поле и сообщение в блоге Йенса Детера о Как избавиться от подсветки фокуса в JavaFX. Имейте в виду, что ссылка на блог Йенса Детера, к сожалению, имеет некоторые раздражающие всплывающие окна.
есть несколько способов сделать это. Ты можешь попробовать все это.
button.setStyle("-fx-focus-color: transparent;");
или
.button{
-fx-focus-color: transparent;
}
или
.button:focused{
-fx-focus-color: transparent;
}
Если вы хотите удалить это кольцо фокусировки в JavaFX 8, перепишите селектор: focus с помощью .стиль селектора кнопок из Модены.стиль 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;
}
ответ от Стелиос Adamantidis правильно, что
.button:focused {
-fx-background-insets: 0, 0, 1, 2;
}
вот мое объяснение:
Например, определение
-fx-background-color: red, green, deepskyblue, blue;
кажется, определяют четыре слоя цвета фона, с красным, как цвет для слоя backmost.
например определение
-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 вы можете найти here:
http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html