2009-08-15 4 views
1

Est-il possible de placer un composant enfant dans un JButton et la rendre transparente à un sous-ensemble d'événements de souris de sorte que:Ajout d'un composant enfant à un JButton

  • Le composant enfant reçoit MouseMotionEvent s (il peut répondre en modifiant une image affichée)
  • encore la déprime en cliquant JButton « derrière » le composant enfant

Si vous ajoutez le composant enfant au bouton, mais sans faire d'autres changements, en cliquant dans la zone o ccupied par l'enfant n'active pas le bouton.

Je sais que cela peut être réalisé en créant une nouvelle classe qui étend JButton mais je préférerais utiliser un composant enfant qui a déjà été écrit.

Note: c'est uniquement pour des raisons esthétiques. Le composant enfant change seulement sa propre apparence. Il n'effectue aucune autre action en réponse aux clics. Il n'y en a qu'un Action, déclenché par le bouton de la manière normale.

Répondre

1

Oui, c'est possible mais il existe probablement de meilleurs moyens de changer l'apparence d'un JButton avec la souris. Vous pouvez étendre un ButtonUI pour le faire. Toutefois, si vous souhaitez déposer un composant sur un JButton, vous devez transmettre d'autres événements de souris (par exemple, des clics) au JButton sous-jacent.

+0

J'ai utilisé SwingUtilities.convertMouseEvent pour transmettre des événements indésirables au bouton, ce qui donne l'effet désiré. – finnw

0

JXLayer est exactement ce dont vous avez besoin. Check out https://jxlayer.dev.java.net/ Le site du projet contient plusieurs bons articles sur l'utilisation de JXLayer pour de nombreux cas d'utilisation.

Questions connexes