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 :

[Composant] JButton texturé


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut [Composant] JButton texturé
    Bonjour,

    Je souhaiterais faire un Jbutton texturé.
    Après divers test, cela ne fonctionnait pas, donc j'ai été cherché sur le net, et j'ai trouvé une solution qui est censée fonctionner, mais qui ne fonctionne pas chez moi, et je ne vois pas pourquoi....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    File fi = new File("bg.gif");					
    if(fi.exists())					
         System.out.println("Existe image");
    ImageIcon img = new ImageIcon(fi.getAbsolutePath());
    JButton bbg = new JButton(label,img);
    bbg.setBounds(x, y, width, height);
    panel.add(bbg);
    frame.add(panel);
    frame.setVisible(true);
    Cela me crée un bouton texturé, mais avec la texture java de base .....

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Personne n'aurait une petite idée, meme si cette solution n'est pas avec un JButton ?

    Edit :

    J'ai réussi à faire que l'image soit insérée grace à ImageIcon, mais le problème est que cela n'est pas vraiment ce que je veux car cela met l'image en icone, donc avec le texte à droite de l'image, hors moi, je veux que l'image soit la texture du bouton.
    La seule méthode que je vois pour faire un background ne prend en argument qu'une couleur (JButton.setBackground(Color color)).

    Est ce que quelqu'un sait si c possible ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    import javax.swing.*;
    import java.awt.event.*;
     
    public class Interface extends JFrame {
     
       public Interface() {
     
          super("titre de l'application");
     
          WindowListener l = new WindowAdapter() {
             public void windowClosing(WindowEvent e){
                System.exit(0);
             }
          };
          addWindowListener(l);
     
          ImageIcon img = new ImageIcon("bg.jpg");
          JButton bouton = new JButton("Mon bouton",img);
          JPanel panneau = new JPanel();
          panneau.add(bouton);
          setContentPane(panneau);
          setSize(200,100);
          setVisible(true);
      }
     
      public static void main(String [] args){
          JFrame frame = new Interface();
      }
    }

  3. #3
    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
    Ca: http://java.developpez.com/faq/gui/?...tonTransparent

    plus créer une classe héritant de JButton et étendant le méthode paintComponent pour dessiner l'image en fond

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Citation Envoyé par sinok Voir le message
    Ca: http://java.developpez.com/faq/gui/?...tonTransparent

    plus créer une classe héritant de JButton et étendant le méthode paintComponent pour dessiner l'image en fond
    Donc il faudrait que je crée une Image a partir du fichier (jpg par exemple) source.
    Mais comment faire que le type "Image" charge un fichier, car à partir de ce type, je n'ai plus qu'à faire "getGraphics" et le problème est résolu (il me semble) ?

  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
    Ou pas vraiment ce serait plutôt quelque chose dans le style suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class MyButton extends JButton {
      private BufferedImage img;
     
      public MyButton() {
         try {
             img=ImageIO.read(getClass().getRessource("MyImg"));
         } catch (IOException e) {
             e.printStackTrace();
         }
         this.setContentAreaFilled(false);
      } 
     
       protected void paintComponent(Graphics g) {
           g.drawImage(img,0,0,null);
           super.paintComponent(g);
       }
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Problème quasiment reglé grace à toi, merci beaucoup.

    Maintenant, je vois que l'image est bien là, mais le bouton fais environ 30 pixels sur 10 alors que je lui demande du 99*99.....

    Je sens que c'est encore un détails à la c... qui bloque .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    class MyButton extends JButton {
    	  private BufferedImage img;
     
    	  public MyButton() {
    	     try {
    	    	 File fi = new File("rules.gif");
    	    	 //setSize(99, 99);
    	    	 if(fi.exists())
    	    	 {
    	    		 System.out.println("EXISTE "+this.getSize());
    	    		 img=ImageIO.read(/*getClass().getResource(*/fi/*)*/);
    	    	 }
    	     } catch (IOException e) {
    	         e.printStackTrace();
    	     }
    	     this.setContentAreaFilled(false);
    	  } 
     
    	   protected void paintComponent(Graphics g) {
                        setSize(99,99); 
    	       g.drawImage(img,0,0,null);
    	       super.paintComponent(g);
    	   }
    	}
     
     
    public class Interface extends JFrame {
    	public Interface() {
     
    	      super("titre de l'application");
     
    	      WindowListener l = new WindowAdapter() {
    	         public void windowClosing(WindowEvent e){
    	            System.exit(0);
    	         }
    	      };
    	      addWindowListener(l);
    	      /*ImageIcon img = new ImageIcon("bg.jpg");
    	      JButton bouton = new JButton("Mon bouton",img);*/
    	      MyButton bouton = new MyButton();
    	      JPanel panneau = new JPanel();
    	      panneau.add(bouton);
    	      setContentPane(panneau);
    	      setSize(600,400);
    	      setVisible(true);
    	  }
     
    	  public static void main(String [] args){
    	      JFrame frame = new Interface();
    	  }
    }

    EDIT :

    Comme prévu, le problème était un détails, car quand je fixe la taille je ne le fait pas au bon endroit, il faut le faire dans le paintComponent (ce qui est logique.....).


    Donc problème reglé, merci infiniment pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème sur le composant JButton
    Par khalidwh dans le forum Composants
    Réponses: 2
    Dernier message: 02/01/2014, 15h37
  2. Perdre le focus sur un composant (JButton)
    Par peofofo dans le forum Composants
    Réponses: 3
    Dernier message: 01/08/2012, 11h00
  3. Réponses: 7
    Dernier message: 25/05/2011, 17h08
  4. [JButton] boutton pour ajouter un composant
    Par ____22 dans le forum Composants
    Réponses: 13
    Dernier message: 15/08/2008, 19h50
  5. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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