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 :

utiliser 2 paint different pour le meme composant ?


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Points : 47
    Points
    47
    Par défaut utiliser 2 paint different pour le meme composant ?
    Bonjour a tous.
    Alors mon problème va vous paraître tordu. Je vous explique je souhaiterait ajouter un composant que j'ai moi même créer. Pour le moment rien de très compliquer seulement je voudrais que lorsque je clique dessus un cadre rouge l'entoure.

    Peut être cas la lecture du code vous y vérrer plus clair :
    class fenetre :
    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
    import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class fenetre extends JFrame{
     
    	static final long serialVersionUID = 1l ;
    	JPanel panneauPrincipal = new JPanel() ;
    	jCanvas jCanvas = new jCanvas() ;
    	evenement evenement = new evenement() ;
     
    	public fenetre() {
    	jCanvas.setPreferredSize(new Dimension(200,200)) ;	
    	jCanvas.addMouseListener(evenement);
    	panneauPrincipal.add(jCanvas) ;
    	setContentPane(panneauPrincipal) ;
    	setTitle("test Graphics") ;
    	setSize(400,400) ;
    	setVisible(true) ;
    	setDefaultCloseOperation(EXIT_ON_CLOSE) ;
    	}
    	public static void main(String[] args) {
    		new fenetre() ;
     
    	}
     
    }
    class jcanvas :
    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
    import java.awt.Graphics;
    import javax.swing.JPanel;
     
     
     
     
    public class jCanvas extends JPanel{
     
    final  static long serialVersionUID = 1l ;
     
    public void paint(Graphics g) {
    	super.paint(g);
    	g.drawString("Clique ici pour m'encadrer", 100, 100) ;
    }
    public void encadrer(Graphics g){
    	super.paint(g);
    	g.drawRect(0, 0, 190, 190) ;
    }
    }
    class evenement :
    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
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
     
    public class evenement implements MouseListener{
    @Override
    public void mouseClicked(MouseEvent e) {
    }
    @Override
    public void mouseEntered(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
    @Override
    public void mouseExited(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
     
     
    public void mousePressed(MouseEvent e) {
    	System.out.println("Lol sa marche") ;
    	jCanvas canvas = new jCanvas() ;
    	canvas.encadrer(canvas.getGraphics()) ;
     
    }
    @Override
    public void mouseReleased(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
     
    }
    erreur :
    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
    Lol sa marche
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at jCanvas.encadrer(jCanvas.java:17)
    	at evenement.mousePressed(evenement.java:24)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Quelqu'un pourrait t'il m'aider a y voir plus clair merci d'avance.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Et bien il y a un NullPointerException à la ligne 17 dans le fichier jCanvas.java à la méthode encadrer.

    C'est ton Graphics qui n'est pas correct, car il vient d'un objet jCanvas que tu n'as pas encore associé à un contexte graphique.

    À première vue tu te mélanges les pinceaux avec tes jCanvas, à cause d'un style d'écriture de cochon, si je puis me permettre. Clarifie un peu ton expression dans ta JFrame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jCanvas jCanvas = new jCanvas() ;
    ... et tu verras, tu comprendras des choses et cela devrait aller mieux ensuite.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 54
    Points : 47
    Points
    47
    Par défaut
    Sayer j'ai trouver ses bon.
    J'ai fait une erreur au niveau de la classe evenement et une mini modif de la classe fenetre je vous montre le code au cas ou il yen est qui est le meme probleme que moi.
    class fenetre :
    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
    import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
    public class fenetre extends JFrame{
     
    	static final long serialVersionUID = 1l ;
    	JPanel panneauPrincipal = new JPanel() ;
    	jCanvas jCanvas = new jCanvas() ;
    	evenement evenement = new evenement(this) ;
     
    	public fenetre() {
    	jCanvas.setPreferredSize(new Dimension(300,200)) ;	
    	jCanvas.addMouseListener(evenement);
    	panneauPrincipal.add(jCanvas) ;
    	setContentPane(panneauPrincipal) ;
    	setTitle("test Graphics") ;
    	setSize(400,400) ;
    	setVisible(true) ;
    	setDefaultCloseOperation(EXIT_ON_CLOSE) ;
    	}
    	public static void main(String[] args) {
    		new fenetre() ;
     
    	}
     
    }
    class evenement :
    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
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
     
    public class evenement implements MouseListener{
    	fenetre fenetre ;
    	public evenement(fenetre fenetre) {
    		this.fenetre = fenetre ;
    	}
    @Override
    public void mouseClicked(MouseEvent e) {
    }
    @Override
    public void mouseEntered(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
    @Override
    public void mouseExited(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
     
     
    public void mousePressed(MouseEvent e) {
    	jCanvas canvas = new jCanvas() ;
    	canvas.encadrer(fenetre.jCanvas.getGraphics()) ;
     
    }
    @Override
    public void mouseReleased(MouseEvent e) {
    	// TODO Auto-generated method stub
     
    }
     
    }
    voila voila j'espere que mon probleme aidera d'autre personne.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/08/2010, 14h45
  2. Réponses: 3
    Dernier message: 02/06/2010, 06h49
  3. Réponses: 1
    Dernier message: 30/01/2009, 11h31
  4. [XSLT]utiliser une feuille xsl pour traiter différents xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2006, 18h19
  5. Comment utiliser une icône personnalisée pour un composant ?
    Par Bruno75 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/09/2005, 17h24

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