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 :

[Debutant][Swing] Probleme de superposition


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut [Debutant][Swing] Probleme de superposition
    Bonjour à tous.

    Pour simplifier, je dispose de deux classes:
    Center qui extends de JPanel
    Computer qui extends de JLabel

    Dans un premier temps dans ma classe Center j'ajoute plusieurs Computer qui s'affiche tous tres bien.

    Puis dans un deuxieme temps je veux afficher des lignes pour inter-connecter les ordinateurs. Alors moi ce que j'ai fais c'est la methode paint(Graphics g) de Center j'ai mis des g.drawLine(....).

    Le probleme, c'est que tous les traits sont au dessus de mes JLabel(Comuter).

    Et je sais pas trop comment m'y prendre proprement.

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    pourrais tu poster ton code please ?

  3. #3
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut
    Oula je vais essayer mais c'est une petite apli alors y'en a un peu partout

    En tete j'ai mon applet avec sa petite methode init()

    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
     
    public void displayinit(){
    			.....
    			// initialisation de tous les centres
    			company.initDisplay(width - leftPanel.getPreferredSize().width, height);
     
     
    			this.cl = new CardLayout();
    			this.rightPanel = new JPanel(cl);
     
    		// ajout de tous les centres dans le Cardlayout
    			this.panelCenter = company.getAllJPanel();
    			for(Center c : panelCenter){
    				this.rightPanel.add(c.getName(),c);
    			}
     
    			// ajout du panel de droite dans mon applet
    			this.getContentPane().setLayout(new BorderLayout());
    		        this.getContentPane().add(this.rightPanel, BorderLayout.CENTER);
    }
    Bon, je passe un petit bout de code de la classe company qui regroupe tout betement tous les centres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public void initDisplay(int width, int height){
    		for(Center c : company){
    			c.initDisplay(width, height);
    		}
    	}
    Puis dans la classe Center

    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
     
    	public void initDisplay(int width, int height){
    		this.setSize(width, height);
     
    		.....	
     
    		for(Computer c : computers){
    			if(....); 
    				this.add(c);
    			}
    			else{
    				.....
    			}
    		}
    	}
    Puis la méthode paint de la classe Center:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     	public void paint(Graphics g) {
    		super.paint(g);
    		// la je vais aller parcourir un arbre représentant le reseau
    		dependency.displayConnection(g);
    	}
    et donc dans la méthode displayConnection, je fais des g.drawLine(.....);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	protected void displayConnection(Graphics g){
    		for(Node n : fils){
    			g.drawLine((int)pos.getX(), (int)pos.getY(),
    					(int)n.pos.getX(), (int)n.pos.getY());
    			n.displayConnection(g);
    		}
    	}
    Voili, voilou ...

  4. #4
    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
    il faut que tu surcharge paintComponent et non paint

  5. #5
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut
    Je sais pas si c'est vraiment ca le mieux mais en tout cas merci sinok car j'avais completement zappé la méthode paintComponents et donc maintenant ce que fait c'est a la fin de mon paint() ben j'appelle paintComponents().

  6. #6
    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
    non il ne vaut mieux ne pas surcharger paint en swing mais seulement surcharger paintComponent pour toutes les opérations de dessin, surcharger paint a tendance à mal faire ressortir voire pas du tout les composants qui seront placés sur le panel (d'ailleurs en Swing généralement quelque soit le component il vaut mieux utiliser paintComponent et ne pas oublier l'appel à super.painComponenet bien sûr)

  7. #7
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut
    Ouai mais dans ce cas quand je surcharge paintComponent dans la méthode si j'y met mes g.drawLine(..) il ne s'affiche plus.

  8. #8
    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
    Tu as dû oublier l'appel à super.paintComponent dans ton paintComponeent

  9. #9
    Membre émérite Avatar de warwink
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 650
    Par défaut
    euh non non je l'ai bien mit

  10. #10
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Par défaut
    Sinok, j'voudrais pas t'embêter mais je crois que le problème qu'il a est le même que moi... http://www.developpez.net/forums/vie...786454#2786454

    Je sais pas si tu pourrait faire un petit exemple clair de la méthode paintComponent que je ne connait pas du tout.

Discussions similaires

  1. [Swing] probleme de debutant
    Par lamoueste dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/02/2006, 09h38
  2. [debutant][swing] Probleme avec un Jpanel
    Par JeanMoul dans le forum Débuter
    Réponses: 6
    Dernier message: 27/08/2005, 19h07
  3. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  4. [debutant]servlet probleme de port
    Par noOneIsInnocent dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 04/09/2003, 16h33
  5. [swing] probleme de memoire
    Par leBigouden dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/05/2003, 14h19

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