Je souhaite créer deux ou plusieurs JButton
s qui partagent l'état, c.-à-d. Lorsque le bouton de la souris est enfoncé sur JButton
, les deux sont affichés comme étant enfoncés (ou "armés") ou, s'ils sont cochés, sont cochée/décochée en même temps, etc.État de partage entre JButtons
Pour l'utilisateur, il doit apparaître comme si les deux boutons étaient le même bouton , apparaissant dans plus d'une place dans la hiérarchie (en réalité swing ne permet pas.)
Je peux arriver à mi-chemin en créant un seul ButtonModel
et en assignant le même modèle aux deux boutons. Ceci synchronise leurs états armés/contrôlés/sélectionnés, etc.
Cependant, un effet notable qui est pas partagé entre les boutons de cette façon est le focus - cliquer sur un bouton donne le focus au bouton (indiqué par un rectangle dans le bouton) et le supprime de l'autre bouton. Je voudrais rendre les deux boutons comme s'ils étaient concentrés chaque fois que soit le bouton a vraiment le focus.
Existe-t-il un moyen propre de faire cela?
Idéalement, je voudrais qu'il soit indépendant du look-and-feel choisi.
Modifier: J'ai découvert un autre problème avec le partage d'un ButtonModel
. Lorsque l'un des boutons perd le focus, il définit les propriétés armed
et pressed
du modèle sur false
. Cela se produit après en manipulant mousePressed
, donc si vous appuyez sur le second bouton lorsque le premier bouton a le focus, il ne passe pas à l'état pressé tant que vous n'appuyez pas dessus une seconde fois.
Je pense que vous avez raison et il est nécessaire d'étendre ButtonUI, mais il est possible de déléguer à l'interface utilisateur par défaut. Cela fait partie de la technique que j'utilise en ce moment. – finnw
Qu'est ce que c'est L & F? Je l'ai vu dans un autre post. –
@davidblaine L & F = look-and-feel –