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 :

[JPanel] Couleur de fond


Sujet :

AWT/Swing Java

  1. #1
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut [JPanel] Couleur de fond
    Bonjour à tous,

    Dans le cadre d'un projet, j'aimerais avoir un petit ensemble de classes me permettant de dessiner qqch de très simple. Je me suis tourné vers le tutoriel de Developpez.com mais le hic est le suivant. Mon application doit être portable et si, sous windows, elle marche parfaitement, dès que je passe sous linux, avec la même JVM, le JPanel reste désespérement noir !!

    QQn aurait-il une piste ?

    D'avance, merci.

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Montre ton code

  3. #3
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Voilà la classe de test :

    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
    Graph g = new Graph();
    		g.setBackground(Color.WHITE);
     
    		g.setPreferredSize(new Dimension(800,600));
    		IDrawable rect = new TransitionDraw(new Point(10,10), "T1");
    		g.addDrawable(rect);
    		IDrawable rect2 = new TransitionDraw(new Point(100,10), "T2");
    		g.addDrawable(rect2);
    		IDrawable circ = new PlaceDraw(new Point(100,150), "P1");
    		g.addDrawable(circ);
    		IDrawable arc = new ArcDraw((FormDrawable)rect, (FormDrawable)circ);
    		g.addDrawable(arc);
    		IDrawable arc2 = new CondArcDraw((FormDrawable)rect2, (FormDrawable)circ, "x = 2");
    		g.addDrawable(arc2);
    		GUIHelper.showOnFrame(g,"Test Petri Graph");
    Pour le reste des classes, ce sont celles issues du tutoriel (à quelques modifications prêt).
    Le problème est que je peux mettre ce que je veux comme couleur pour la commande g.setBackground(), cela ne change rien du tout. Et en retirant tous les addDrawable, donc en créant juste le panel et en l'affichant, il reste noir !

    Précision : Je travaille sous eclipse avec le JDK de Sun, Version 1.4.2_10

  4. #4
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Quel est le code de dessin de la classe Graph ? Honore-t-elle la propriete Background ?

  5. #5
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    Pas directement, mais par héritage, car elle hérite de JPanel

    En voici le code pour info :

    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 Graph extends JPanel{
     
    	private static final long serialVersionUID = 1L;
     
    	private List drawables = new LinkedList();
     
    	public void paint(Graphics g) {
    		for (Iterator iter = drawables.iterator(); iter.hasNext();) {
    			IDrawable d = (IDrawable) iter.next();
    			d.draw(g);
    		}
    	}
     
    	public void addDrawable(IDrawable d) {
    		drawables.add(d);
    		repaint();
    	}	
    }

  6. #6
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Ben cette classe ne dessine pas le fond du composant, donc c'est normal qu'il ne soit jamais de la couleur que tu as choisi Tu peux soit appeler super.paint(g) (mais je ne garantis pas le resultat, je ne sais plus si le JPanel peut changer de couleur), soit remplacer paint() par paintComponent() (meme remarque) soit rajouter :

    Graphics2D g2 = (Graphics2D) g;
    g2.setColor(getBackground());
    g2.fill(g2.getClipBounds());

    au debut de la methode paint() de Graph.

  7. #7
    Membre Expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Par défaut
    De fait, cela fonctionne, merci pour ton aide.

    Mais alors, une question subsiste, pourquoi cela fonctionnait-il sans cela sous windows ?

    Et seconde question, la classe JPanel hérite de JComponent qui elle implémente la méthode setBackground alors pq cela n'est-il pas correct ?

  8. #8
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Tu surcharges la methode paint(), autrement dit tu masque tout le code de dessin de JPanel et JComponent. Puisque tu n'avais pas ecrit qu'il fallait redessiner l'arriere plan, plus personne ne le faisait

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

Discussions similaires

  1. Couleur de fond d'un JPanel
    Par Anduriel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/12/2011, 12h04
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. Réponses: 12
    Dernier message: 25/04/2007, 16h42
  4. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

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