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

Composants Java Discussion :

Dessin sur JPanel et refresh


Sujet :

Composants Java

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut Dessin sur JPanel et refresh
    Salut,
    je dessine sur un JPanel et j'ai un problème de repaint. Lorsque un sous-menu de la barre de menu apparaît puis qu'il disparaît, ce qui est dessiné en dessous du menu disparaît. Enfin, en fait ça dépend de la méthode que j'utilise.
    J'ai une classe qui étend JPanel et je redéfinis paint(Graphics g) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
    		g.drawRect(0, 0, 50, 50);
    	}
    Ceci fonctionne, et le rectangle est retracé lorsque le sous-menu disparaît.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
    		this.getGraphics().drawRect(0, 0, 50, 50);
    	}
    Ceci ne fonctionne pas, le rectangle est bien tracé mais la partie du rectangle qui est sous le menu n'est pas redessinée. Je ne comprends pas très bien pourquoi. J'imagine que les 2 Graphics sont différents mais d'où vient l'argument réel g lors d'un appel à cet méthode ?

    Le problème final est que je veux pouvoir dessiner sur un JPanel depuis une méthode d'une autre classe qui serait appelé dans paint(Graphics g) du JPanel, ex. dans ma classe qui étends JPanel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class DrawingJPanel extends JPanel {
     
    	private JPanelDrawer drawer;
     
    	@Override
    	public void paint(Graphics g) {
    		super.paint(g);
    		this.drawer.draw();
    	}
    }
    Et mon autre classe raccourcie :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class JPanelDrawer extends Drawer {
     
    	// Classe qui étend le JPanel et redéfinit paint(Graphics g)
    	private DrawingJPanel drawingPanel;
     
     
    	public void draw()	{
    		this.drawingPanel.getGraphics().drawRect(0, 0, 50, 50);
    	}
    }
    Mais ceci ne fonctionne pas non plus, le rectangle n'est pas rafraichie.
    Enfin bref, le but réellement final étant simplement de tracer sur un JPanel et que tout soit bien retracé même si un menu apparaît/disparaît, quelqu'un aurait-il une idée sur la question ?
    En vous remerciant.
    Vive les roues en pierre

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Bon le problème venait du fait qu'il faut redéfinir
    public void paintComponent(Graphics g) {
    et non
    public void paint(Graphics g)
    Vive les roues en pierre

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

Discussions similaires

  1. Dessin persistant sur JPanel
    Par Mockingbird dans le forum 2D
    Réponses: 8
    Dernier message: 11/11/2009, 20h17
  2. Réponses: 4
    Dernier message: 21/07/2008, 22h32
  3. dessiner sur un JPanel
    Par bellemlih dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 15/02/2008, 11h06
  4. [Dessin] Dégradé sur JPanel
    Par Piolet dans le forum 2D
    Réponses: 8
    Dernier message: 29/10/2007, 01h22
  5. Réponses: 4
    Dernier message: 27/02/2006, 16h32

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