Bouton Personnalisée Sans JNI

[Résolu]
Signaler
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Salut Mes Amis :

Savez vous comment changer la forme des boutons (JButton) -sans passer pas JNI- pour leur donner une forme personnalisée?

Je veux plus précisement crée un bouton ayant la forme de la touche Entrée du clavier.

3 réponses

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
110
Salut,

pas besoin de JNI pour ça vu que c'est la jvm qui le dessinne...
tu peux cependant le faire de plusieurs façon:
1 tu ne te prend pas la tete et tu utilise la technique porcho en redefinissant le paintComponent.
2 tu te prend un peux plus la tete et tu redef le model graphique (BasicButtonUI).<--je te conseil plus ça
3 tu fais ton propre JButton mais c'est relativement lourd et sujet à bug.
...
dans tout les cas il te faudra redef les zone admissibles par la souris pour effectuer une action (soit pas d'action dans les zones mortes du bouton).

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

il y a une quatrieme maniere qui consiste à dessiner ton bouton "entrée" dans les différent états (pressé, relevé,  selectionné ...) et attribuer ces images par les méthodes setPressedIcon, setSelectedIcon, setRolloverIcon, setRolloverSelectedIcon ...
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
36
Salut :

Supposons que je vais choisir la solution qui consiste à redéfinir la méthode paintComponent est ce que je vais avoir une forme 3D (avec une épaisseur)?
 

public paintComponent (Graphics g)
{
      super.paintComponent (g);

      Graphics2D g2D = (Graphics2D)g;
      g2D.drawOval (50, 50, 100, 100);
}