Comment puis-je supprimer la bordure par défaut d'un bouton JavaFX (lorsque sélectionné)?

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

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

je veux aussi le faire en utilisant CSS, et non pas de façon déclarative à partir du script JavaFX principal. Cependant, j'ai du mal à trouver quelle propriété CSS je dois utiliser (euh, mettre à 0?) afin de supprimer la frontière.

41
demandé sur Titus 2011-05-23 07:19:24

5 réponses

pour supprimer l'affichage de l'anneau de mise au point de toute commande à l'intérieur du code:

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

pour supprimer l'anneau de mise au point pour toutes les commandes, appliquer une feuille de style:

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

pour retirer uniquement l'anneau pour tous les boutons, Utilisez:

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

je trouve l'attribut -fx-focus-color plus simple que de compter sur une combinaison bizarre d'insets pour supprimer l'anneau de mise au point.

en plus, vous pouvez utiliser le même paramètre pour changer la bague de mise au point d'une couleur différente, comme -fx-focus-color: firebrick .

Mise À Jour 20 Janv. 2015

JavaFX 8 livré avec une nouvelle feuille de style agent utilisateur par défaut ( modena ). Cette nouvelle feuille de style de l'agent utilisateur est livrée avec un réglage supplémentaire pour les highlights de focus: -fx-faint-focus-color . Pour les applications Java 8, Il est nécessaire de définir à la fois -fx-focus-color et -fx-faint-focus-color pour transparent pour enlever toutes les traces de l'anneau de mise au point. Voir la réponse de good4m à cette question.

Mise À Jour 10 Décembre 2015

si vous définissez seulement les couleurs de mise au point à transparent comme précédemment recommandé dans cette réponse, pour certains contrôles, vous pouvez voir une distinction subtile entre quand un contrôle est mis au point et quand il ne l'est pas. Pour de nombreuses applications, ce ne sera pas un problème et réglage de la netteté des couleurs transparentes seront suffisant.

pour plus d'informations et des solutions alternatives, passez en revue la réponse de James_D à supprimer le cadre bleu du champ D'entrée JavaFX et le billet de blog de Jens Deter sur comment se débarrasser de la mise en évidence de focus dans JavaFX . Soyez conscient que le lien vers le blog de Jens Deter a malheureusement quelques pop-ups ennuyeux.

66
répondu jewelsea 2017-05-23 12:34:50
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
54
répondu JP_ 2015-01-19 19:44:39

il y a plusieurs façons de le faire. Vous pouvez essayer de tout cela.

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

ou

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

ou

.button:focused{
     -fx-focus-color: transparent;
}
19
répondu Shekh Shagar 2013-11-09 17:48:04

si vous voulez supprimer cette bague de mise au point dans JavaFX 8, réécrivez le sélecteur de mise au point :avec le .le style de sélection de bouton de Modène.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;
}
13
répondu Zoltán Barics 2015-03-04 11:29:01

la réponse de Stelios Adamantidis est correcte, 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 de fond, avec le rouge comme couleur pour 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 rembourrage pour les couches de couleurs. Vous pouvez également définir des valeurs négatives, alors la couleur sera autour du contrôle.

Les valeurs par défaut d'un bouton semblent être quelque chose comme ceci:

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

définir la première valeur des insets à 0 cache la couleur rougeoyante derrière la deuxième couleur.



Plus D'informations sur JavaFX CSS vous pouvez trouver ici:

http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html

8
répondu user2229691 2017-05-23 12:34:50