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 :

Actualiser un JPanel ? !


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Points : 86
    Points
    86
    Par défaut Actualiser un JPanel ? !
    Bonjour à toute et à tous,

    Aujourd'hui je suis confronté à un problème que je ne sais pas résoudre. J'ai beau cherché rien ne fonctionne. Je vous explique.

    J'ai une JFrame contenant un JPanel qui s'occupe d'afficher une image et dans ce JPanel j'en ai un autre qui doit m'afficher à l'aide d'un gridbaglayout deux champs de saisie. Tout est bien positionné mais ma photo d'arrière plan ne s'affiche pas ? ! Pourquoi ? !

    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
    public class Fenetre extends JFrame
    {
    	// Déclarations des variables
    		private PanneauImage panneau = new PanneauImage();
     
    	//	Constrcuteur
    		public Fenetre()
     
    		{
    			this.setTitle("Projet: La transcription d'ADN");
    			this.setLayout(new BorderLayout());
    			this.setSize(400,283);
    			this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			this.setLocationRelativeTo(null);
    			this.setVisible(true);
    			this.setResizable(false);
    			this.add(panneau);		
    		}
    }
    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
    public class PanneauImage extends JPanel 
    {
    	// Déclarations et initialisations des variables
    		private Panneau1 panneauCentral = new Panneau1();
     
    	// Constrcuteur
    		public PanneauImage()
    		{
    			this.setLayout(new BorderLayout());
    			this.add(panneauCentral);
    		}
     
    	// Méthode  
    		  public void paintComponent(Graphics g)
    		  {
    			    try 
    			    {
    			        Image img = ImageIO.read(new File("tube_sanguin.jpg"));
    			        g.drawImage(img, 0, 0, this);
    			        //Pour une image de fond
    			        //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    			     } 
    			    catch (IOException e) 
    			    {
    			        e.printStackTrace();
    			    }               
    		  } 
    }

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public class Panneau1 extends JPanel
    {
    	// Déclarations et initialisations des variables
    		private JTextField saisieNom = new JTextField("");
    		private JTextField saisiePrenom = new JTextField("");
    		private JLabel nom = new JLabel("Nom : ");
    		private JLabel prenom = new JLabel("Prénom : ");
     
    	// Constructeur
    		public Panneau1()
    		{
     
    			this.setPreferredSize(new Dimension(200,141));
    			this.setLayout(new GridBagLayout());
     
    		    GridBagConstraints gbc = new GridBagConstraints();
     
    		    // Ajout de JtextField Nom
    			    gbc.gridx = 0;
    			    gbc.gridy = 0;
    			    gbc.gridheight = 1;
    			    gbc.gridwidth = 1;
    			    gbc.anchor = GridBagConstraints.LAST_LINE_START;
    			    this.add(nom, gbc);
     
    			// Ajout de JLabelNom
    			    gbc.gridx = 1;
    			    gbc.gridheight = 1;
    			    gbc.gridwidth = 1;
    			    saisieNom.setPreferredSize(new Dimension(150,30));
    			    this.add(saisieNom, gbc);
     
    		    gbc.gridwidth = GridBagConstraints.REMAINDER;
     
    		    // Ajout de JtextField Prénom
    			    gbc.gridx = 0;
    			    gbc.gridy = 1;
    			    gbc.gridheight = 1;
    			    gbc.gridwidth = 1;
    			    gbc.anchor = GridBagConstraints.LAST_LINE_START;
    			    this.add(prenom, gbc);
     
    			// Ajout de JLabel Prénom
    			    gbc.gridx = 1;
    			    gbc.gridheight = 1;
    			    gbc.gridwidth = 1;
    			    saisiePrenom.setPreferredSize(new Dimension(150,30));
    			    this.add(saisiePrenom, gbc);
     
    		}
     
    }
    Voici mes trois classes, j'ai l'impression que le problème vient d'un repaint mais bon j'utilise paintComponent et il n'existe pas de repaintComponent. Peut-être un problème de Super paintComponent() ?

    Amicalement crodilus.

  2. #2
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Bonsoir
    C'est normal que ton image ne s'affiche pas puisque tu mets
    panneauCentral par dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public PanneauImage() {
     
    		this.setLayout(new BorderLayout());
    		this.add(panneauCentral);
    	}
    Pourquoi ne pas tout mettre dans le meme JPanel ?

  3. #3
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Tu peux essayer ça si tu veux mais je ne sais pas si c'est ce que tu veux
    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
    public class PanneauImage extends JPanel {
     
    	private Panneau1 panneauCentral = new Panneau1();
     
    	public PanneauImage() {
     
    		JLabel label= new JLabel(new ImageIcon("sablier.png"));
    		label.setPreferredSize(new Dimension(100, 100)); 
    		this.add(label);
     
    		panneauCentral.setPreferredSize(new Dimension(400, 141));
    		this.add(panneauCentral);
    	}
     
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		/*try {
    			Image img = ImageIO.read(new File("sablier.png"));
    			g.drawImage(img, 0, 0, this);
    			//Pour une image de fond
    			//g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    		} 
    		catch (IOException e) {
    			e.printStackTrace();
    		}  */             
    	} 
    }

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 76
    Points : 86
    Points
    86
    Par défaut
    Je croyais quand superposant un JPanel ayant pour Layout un GridBagLaouyt celui si n’effaçait que la zone sur laquelle il empiétait mais apparemment ce n'est pas le cas ? !

    J'ai essayé ton code mais ça n'a pas eu l’effet que je désirais.

    Mais en suivant ton conseil de tout mettre dans le même panel cela à fonctionner ! J'ai juste déplacer ma fonction paintComponent dans Panneau1.

    Merci pour l'aide !

    Amicalement crodilus.

  5. #5
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    De rien, avec plaisir

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

Discussions similaires

  1. Actualisation de JPanel,click JButtion
    Par LeoLeRoux dans le forum Débuter
    Réponses: 0
    Dernier message: 17/01/2014, 15h33
  2. Actualiser un JPanel dans un JScrollPane
    Par bingo06260 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/04/2011, 21h30
  3. Actualisation de JPanel impossible
    Par anaranjado dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 19/02/2009, 11h08
  4. [debutant] Actualiser une JFrame et ses JPanel
    Par jerem721 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 27/02/2008, 11h22
  5. Réponses: 2
    Dernier message: 03/03/2007, 19h16

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