IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

recouvrir tout un bouton d'une image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut recouvrir tout un bouton d'une image
    Bonjour,

    Je cherche à recouvrir un bouton avec une image stockée dans un objet ImageIcon. J'ai bien passé mon Icon à mon constructeur de bouton mais il reste un pb.

    Lors du redimensionnement de ma page, mon problème est que mon image sur le bouton ne change pas de taille, j'aimerais qu'elle recouvre la totalité de la surface du bouton quelque soit la taille de mon bouton (dont la taille change avec l'agrandissement de ma fenêtre).

    Avez vous une solution svp ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut
    A priori, vous instanciez un JButton par le constructeur new JButton(String name, Icon image).
    Dans ce cas, l'image ne doit pas être considérée comme étant l'habillage du bouton, mais une icône fixe contenue. En clair, en plaçant l'icône ainsi dans votre bouton, il n'existe tout simplement pas de moyen de la redimensionner.
    L'alternative consiste à sous-classer JButton et à ré-écrire la methode paint. Puis, dans cette methode, utiliser le pamramètre fournit après l'avoir casté en Graphics2D qui vous permettra par ses différentes méthodes drawImage(..) d'obtenir ce que vous recherchez.

    Bon courage.


    Attention :
    N'oubliez pas de prendre en compte dans la ré-écriture de la méthode paint, le fait de 'peindre' le texte du bouton. Puisque vous redéfinissez la méthode paint, l'affichage du texte du bouton ne sera plus naturel.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Par défaut suite
    Bonjour,

    Merci beaucoup pour cette réponse, elle va m'éviter de continuer à trouver un "truc" existant.

    Redéfinir paint me parait un peu complexe donc je vais plutôt chercher à définir la taille de mon bouton en fixe afin que ceux ci gardent la taille de mon icone. Ainsi, les icones sur mes boutons seront proches les uns des autres (c'est ce que je je cherche à faire, rapprocher les images sur les boutons sans espaces apparents).

    Comment puis je faire pour fixer une taille fixe à mes boutons meme en cas d'agrandissement de ma fenêtre ?

    Merci et bonne journée.

  4. #4
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut
    Cela peut être une solution, mais elle va vous poser un autre problème. Pour pouvoir positionner précisément un coomposant graphique comme un JButton, et contrôler sa taille, il n'y a qu'une solution, c'est de définir le layout du container à null, puis d'exploiter les methodes setBounds(x, y, width, height) des composants, mais cela ne concernera pas que vos bouton, mais tous les autres eléments contenu dans le même container que le/les JButton.
    Même si cela vous paraît difficile, je vous conseil malgré tout d'étudier la solution de redéfinission de la méthode paint.
    Si vous le désirez, je peux vous faire parvenir un exemple, mais croyez mon expérience auto-didacte, y a pas mieux pour comprendre que de se casser la tête, au moins un petit peu...
    Bonne chance...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Sinon une méthode un poil plus simple serait de dire au bouton de ne quasiment rien redessiner, en utilisant tout simplement plusieurs méthodes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    button.setOpaque(false);
    button.setContentAreaFilled(false);
    button.setFocusPainted(false);
    button.setBordersPainted(false);
    button.setPreferredSize(largeurImage,hauteurImage
    Et de lui affecter une image (le texte devrait normalement apparaître tout de même).

    En ce qui concerne le redimansionnement il suffit d'indiquer à ton LayoutManager de ne pas redimensionner ton bouton (question qui en découle, quel LayoutManager utilises tu).

Discussions similaires

  1. Faire un bouton avec une image ?
    Par blanchonvincent dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 29/04/2007, 13h14
  2. Réponses: 81
    Dernier message: 26/11/2006, 14h23
  3. [Bouton avec une image]
    Par swayvill dans le forum Java ME
    Réponses: 1
    Dernier message: 29/09/2006, 14h58
  4. Comportement différent entre un bouton et une image
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 07/11/2005, 08h47
  5. [FLASH 5]un bouton dans une image pour revenir sur une scene
    Par patato valdes dans le forum Flash
    Réponses: 7
    Dernier message: 28/04/2004, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo