Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1648 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]probleme de bouton personnaliser.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]probleme de bouton personnaliser.

n°2269521
saebalyon
le roi de l'aurtogafe
Posté le 11-11-2015 à 23:34:51  profilanswer
 

Bonjour,
 
J’essaie de personnaliser des bouton sous java mais impossible.... ca crée une sorte de miroire de la Jframe dans le bouton !!! (je croie que j'ai développer une nouvelle fonction de JAVA !!!)
 
un exemple de programme réalisé :
j'ai une image : java.jpg
3 classe :
- Fenetre ( dans package flowlayout)
- test (dans package flowlayout_test)
- Bouton  ( dans package flowlayout)
 
Les 3 classes sont composé de la facon suivant :
 
Test :
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package flowlayout_test;
 
 
import flowlayout.Fenetre;
import flowlayout.Panneau;
 
 
 
 
import javax.swing.JFrame;
 
 
/**
 *
 * @author  
 */
 
 
public class Test //crée une classe principal Test pour indiquer ou trouver les objet/methode/classes//
{
    public static void main(String[] args)
    {
        Panneau methode = new Panneau(); //indique ou seront les methodes qui modifiront le Panel//
        Fenetre fenetre = new Fenetre(); //indique comment la fenetre JPane est crée//
       
     
    }
     
 
     
}
 
 
Classe Fenetre :
package flowlayout;
 
 
import flowlayout.Panneau;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class Fenetre extends JFrame {
 
    private Panneau pan = new Panneau();
    public JButton bouton = new Bouton("mon bouton" );
    private JPanel container = new JPanel();
 
    public Fenetre() {
        this.setTitle("Animation" );
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        container.setBackground(Color.white);
        container.setLayout(new BorderLayout());
        container.add(pan, BorderLayout.CENTER);
        container.add(bouton, BorderLayout.SOUTH);
        this.setContentPane(container);
        this.setVisible(true);
        go();
    }
 
    private void go() {
//Les coordonnées de départ de notre rond
        int x = pan.getPosX(), y = pan.getPosY();
//Le booléen pour savoir si l'on recule ou non sur l'axe x
        boolean backX = false;
//Le booléen pour savoir si l'on recule ou non sur l'axe y
        boolean backY = false;
//Dans cet exemple, j'utilise une boucle while
//Vous verrez qu'elle fonctionne très bien
        while (true) {
//Si la coordonnée x est inférieure à 1, on avance
            if (x < 1) {
                backX = false;
            }
//Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule
            if (x > pan.getWidth() - 50) {
                backX = true;
            }
//Idem pour l'axe y
            if (y < 1) {
                backY = false;
            }
            if (y > pan.getHeight() - 50) {
                backY = true;
            }
//Si on avance, on incrémente la coordonnée
            if (!backX) {
                pan.setPosX(++x);
            } //Sinon, on décrémente
            else {
                pan.setPosX(--x);
            }
//Idem pour l'axe Y
            if (!backY) {
                pan.setPosY(++y);
            } else {
                pan.setPosY(--y);
            }
//On redessine notre Panneau
            pan.repaint();
//Comme on dit : la pause s'impose ! Ici, trois millièmes de seconde
            try {
                Thread.sleep(3);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
 
 
Classe Bouton :
package flowlayout;
 
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
public class Bouton extends JButton{
private String name;
private Image img;
public Bouton(String str){
super(str);
this.name = str;
try {
img = ImageIO.read(new File("java.jpg" ));
} catch (IOException e) {
e.printStackTrace();
}
}
public void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D)g;
GradientPaint gp = new GradientPaint(0, 0, Color.blue, 0, 20,
Color.cyan, true);
g2d.setPaint(gp);
g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(),
this);
g2d.setColor(Color.black);
g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth()
/ 2 /4), (this.getHeight() / 2) + 5);
}
}        
 

Question
: comment personnaliser le bouton avec une image ?
 
Merci d'avance


Message édité par saebalyon le 11-11-2015 à 23:36:01

---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
mood
Publicité
Posté le 11-11-2015 à 23:34:51  profilanswer
 

n°2269522
saebalyon
le roi de l'aurtogafe
Posté le 11-11-2015 à 23:54:17  profilanswer
 

ca me mais en erreure :  
 
run:
javax.imageio.IIOException: Can't read input file!
 at javax.imageio.ImageIO.read(ImageIO.java:1301)
 at flowlayout.Bouton.<init>(Bouton.java:25)
 at flowlayout.Fenetre.<init>(Fenetre.java:14)
 at flowlayout_test.Test.main(Test.java:29)
BUILD SUCCESSFUL (total time: 5 seconds)


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269568
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 21:41:53  profilanswer
 

personne a une solution ?


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269570
caps lock
Posté le 12-11-2015 à 21:48:45  profilanswer
 

Commence déjà par nous montrer AUSSI ta classe Panneau

n°2269571
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:16:04  profilanswer
 

tien j'avais pas vue je l'avais oublié , autant pour moi , la voila :  
 
classe panneau  
 
package flowlayout;
 
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
 
public class Panneau extends JPanel {
 
    private int posX = -50;
    private int posY = -50;
 
    public void paintComponent(Graphics g) {
//On choisit une couleur de fond pour le rectangle
        g.setColor(Color.white);
//On le dessine de sorte qu'il occupe toute la surface
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
//On redéfinit une couleur pour le rond
        g.setColor(Color.red);
//On le dessine aux coordonnées souhaitées
        g.fillOval(getPosX(), getPosY(), 50, 50);
    }
 
    public int getPosX() {
        return posX;
    }
 
    public void setPosX(int posX) {
        this.posX = posX;
    }
 
    public int getPosY() {
        return posY;
    }
 
    /**
     * @param posY the posY to set
     */
    public void setPosY(int posY) {
        this.posY = posY;
    }
}


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269572
caps lock
Posté le 12-11-2015 à 22:23:49  profilanswer
 

En bidouillant les imports j'obtiens ça :
http://reho.st/self/80ad2c55d100dc7667f210efe50a592319009ee8.png
 
C'est quoi la question au juste ?


Message édité par caps lock le 12-11-2015 à 22:24:08
n°2269573
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:25:20  profilanswer
 

pour moi le bouton ne prend pas en compte mon image que je veut lui mettre et je ne vois pas ou est l’erreur
 
ta modifier quoi ?


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269574
caps lock
Posté le 12-11-2015 à 22:29:35  profilanswer
 

Premièrement si tu as ce type de message  

javax.imageio.IIOException: Can't read input file!  
 at javax.imageio.ImageIO.read(ImageIO.java:1301)


Ca veut dire que ton image n'a pas été trouvée par ton programme, il faut placer le fichier "java.jpg" à la racine (c'est à dire à côté des répertoires build/dist/src)

n°2269575
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:34:25  profilanswer
 

je l'ai copier dans tous les répertoire qui pouvais exister pas mieu


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269576
caps lock
Posté le 12-11-2015 à 22:37:32  profilanswer
 

Regarde si l'extension de ton image n'est pas cachée ... exemple : java.jpg.jpg  ou bien java.jpg.png

mood
Publicité
Posté le 12-11-2015 à 22:37:32  profilanswer
 

n°2269577
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:38:25  profilanswer
 

non c'est bien java.jpg


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269578
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:38:53  profilanswer
 

tu dit ta bidouiller les import ta modifier quoi dedans


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269579
caps lock
Posté le 12-11-2015 à 22:44:45  profilanswer
 

Dans ta classe Bouton, juste après :

Code :
  1. super(str);


 
copie colle ce code :
 

Code :
  1. File folder = new File(System.getProperty("user.dir" ));
  2.       File[] listOfFiles = folder.listFiles();
  3.       for (int i = 0; i < listOfFiles.length; i++) {
  4.          if (listOfFiles[i].isFile()) {
  5.             System.out.println("File " + listOfFiles[i].getName());
  6.          } else if (listOfFiles[i].isDirectory()) {
  7.             System.out.println("Directory " + listOfFiles[i].getName());
  8.          }
  9.       }


 
execute et copie le résultat de la console

n°2269580
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 22:54:36  profilanswer
 

le resultat :  
 
run:
File java.jpg
File manifest.mf
File Thumbs.db
File build.xml
Directory test
Directory build
Directory src
Directory nbproject
Directory dist
javax.imageio.IIOException: Can't read input file!
 at javax.imageio.ImageIO.read(ImageIO.java:1301)
 at flowlayout.Bouton.<init>(Bouton.java:36)
 at flowlayout.Fenetre.<init>(Fenetre.java:13)
 at flowlayout_test.Test.main(Test.java:28)


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269581
caps lock
Posté le 12-11-2015 à 22:54:42  profilanswer
 

Et pour les imports, j'ai tout harmonisé sur le même package ...
 
Fichier Test.java

Code :
  1. package test;
  2. import flowlayout.Fenetre;
  3. import flowlayout.Panneau;


 
Fichier Fenetre.java

Code :
  1. package test;
  2. package flowlayout;
  3. import flowlayout.Panneau;


 
 

n°2269582
saebalyon
le roi de l'aurtogafe
Posté le 12-11-2015 à 23:21:02  profilanswer
 

si je vire les import ca marche plus du tous
 
je vois pas d’où sort ce package test


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269616
saebalyon
le roi de l'aurtogafe
Posté le 13-11-2015 à 19:18:37  profilanswer
 

c'est bon j'ai trouver la solution au lieu d’écrire que java.jpg il fallait j’écrive /src/.... (en gros le lieu exacte de l'image)


---------------
L'urbex : faire découvrir le patrimoine oublié / Mon album urbex : https://www.flickr.com/photos/14695 [...] 5272741566
n°2269690
caps lock
Posté le 14-11-2015 à 18:15:34  profilanswer
 

saebalyon a écrit :

je l'ai copier dans tous les répertoire qui pouvais exister pas mieu


heureusement que tu avais dit ça


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]probleme de bouton personnaliser.

 

Sujets relatifs
[JQUERY]Problème requête ajax en GET via PHPproblème TRIGGER
Problème enregistrement de fichierProbleme JFrame Load .Jar Externe
[Résolu][WebServices&Ajax]problème de connexion juste avec ajaxDemande aide pour zone de texte et bouton recherche
Probleme d'affichage de mes enregistrementsProblème de récupération d'informations database
Eclipse léger problème dans le tri des importsProblème "basique" de binding
Plus de sujets relatifs à : [JAVA]probleme de bouton personnaliser.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR