web-dev-qa-db-fra.com

Comment supprimer l'éclat de bordure par défaut d'un bouton JavaFX (lorsqu'il est sélectionné)?

J'essaie de supprimer la lueur de bordure (veuillez voir la capture d'écran ci-dessous) qui apparaît par défaut lorsqu'un bouton JavaFX est sélectionné:

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

Je veux également le faire en utilisant CSS, et non de manière déclarative à partir du script JavaFX principal. Cependant, j'ai du mal à déterminer quelle propriété CSS je dois utiliser (euh, définie sur 0?) Afin de supprimer cette bordure.

47
Titus

Pour supprimer l'affichage de la bague de mise au point de tout contrôle du code:

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

Pour supprimer la bague de mise au point de tous les contrôles, appliquez une feuille de style:

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

Pour retirer uniquement l'anneau de tous les boutons, utilisez:

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

Je trouve le -fx-focus-color paramètre d'attribut plus simple que de compter sur une combinaison étrange d'encarts pour supprimer la bague de mise au point.

En outre, vous pouvez utiliser le même paramètre pour modifier la bague de mise au point sur une couleur différente, telle que -fx-focus-color: firebrick.

Mise à jour du 20 janvier 2015

JavaFX 8 est livré avec une nouvelle feuille de style d'agent utilisateur par défaut ( modena ). Cette nouvelle feuille de style d'agent utilisateur est livrée avec un paramètre supplémentaire pour les faits saillants du focus: -fx-faint-focus-color. Pour Java 8 applications, il est nécessaire de définir les deux -fx-focus-color et -fx-faint-focus-color à transparent pour supprimer toutes les traces de la bague de mise au point. Voir la réponse de good4m à cette question.

Mise à jour du 10 décembre 2015

Si vous définissez uniquement les couleurs de mise au point sur transparent comme recommandé précédemment dans cette réponse, pour certains contrôles, vous pouvez voir une différenciation subtile entre le moment où un contrôle est mis au point et celui où il ne l'est pas. Pour de nombreuses applications, ce ne sera pas un problème et la définition des couleurs de mise au point sur transparent sera suffisante.

Pour plus d'informations et d'autres solutions, consultez la réponse de James_D à Supprimer le cadre bleu du champ de saisie JavaFX et le blog de Jens Deter sur Comment se débarrasser de la mise en surbrillance du focus dans JavaFX . Sachez que le lien vers le blog de Jens Deter contient malheureusement des fenêtres contextuelles ennuyeuses.

75
jewelsea
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
58
JP_

Il existe plusieurs façons de procéder. Vous pouvez essayer tout cela.

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

ou

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

ou

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

Si vous souhaitez supprimer cet anneau de focus dans JavaFX 8, réécrivez le sélecteur: focus avec le style de sélecteur .button de 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;
}
15
Zoltán Barics

La réponse de Stelios Adamantidis est correcte, ce qui est

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


Voici mon explication:

Par exemple, la définition

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

semble définir quatre couches de couleurs d'arrière-plan, le rouge étant la couleur de la couche la plus en arrière.

Par exemple la définition

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

définit le rayon de tous les coins pour chaque couche de couleur. Ici, la couche rouge a tous les coins avec un rayon de 0, la couche verte a tous les coins avec un rayon de 1 et ainsi de suite.

Par exemple la définition

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

définit le remplissage des calques de couleur. Vous pouvez également définir des valeurs négatives, puis la couleur sera autour du contrôle.

Les valeurs par défaut d'un bouton semblent ressembler à ceci:

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

La définition de la première valeur des encarts à 0 masque la couleur rougeoyante derrière la deuxième couleur.

Pour en savoir plus sur JavaFX CSS, cliquez ici:
http://docs.Oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html

8
user2229691