Rechercher : dans
Par :

Java : méthode painComponent jamais appelée

Dernière réponse le 26 mar 2007 à 17:52:05 velociraptor, le 19 mar 2007 à 16:40:55 
 Signaler ce message aux modérateurs

Bonjour,

Je sollicite votre aide car je suis légèrement bloqué sur un bout de code java

Voilà, j'ai un JPanel tout ce qu'il y a de plus normal, j'y ajoute des données dans un gridLayout et j'y met une image de fond. Le problème est au niveau de l'image de fond : la méthode paintComponent qui est sensée me l'ajouter n'est jamais exécuté. J'ai beau essayé de rajouter des repaint(), des update(), updateUI() etc etc, rien n'y fait ! Et j'aimerais assez comprendre pourquoi car j'utilise ça dans une dizaine d'autres programmes et ça marche !

J'ai aussi cherché à utiliser une méthode paint() à la place, même résultat...

Voilà mon bout de code :


import javax.swing.*;
import java.awt.*;


public class AffichagePageCarnet extends JPanel {
	
	private static final long serialVersionUID = 1L;
	private JPanel pane;
	
	public AffichagePageCarnet()
	{
		pane = new JPanel();
		GridLayout layout = new GridLayout(2, 8);
		pane.setLayout(layout);
// les 16 libellés se chargent bien...
		for(int i = 0; i<16; i++)
		{
			pane.add(new JLabel("Test"));
		}
	}
	
// retourne le JPanel que je rajoute au programme global
// avec un simple add("Center", pageCree)
	public JPanel creerPageIndividuelle()
	{
		pane.repaint();
		return this.pane;
	}

// voilà la madame qui veut pas être exécutée
// bon moi aussi j'aimerais pas, mais c'est pas une raison !
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g); 
		Graphics2D g2 = (Graphics2D)g;

// ligne qui me fait dire qu'il n'y a pas d'exécution
// car elle ne s'est jamais affichée dans ma console...
		System.out.println(getClass().getResource("/images/parchemin.png"));
		
        ImageIcon ic = new ImageIcon(getClass().getResource("/images/parchemin.png"));
		Image fond = ic.getImage();

		g2.drawImage(fond,0,0,1024,680,this);

	}
	
}



Un grand merci d'avance à qui m'aidera à comprendre !

Bonne journée,

Alexandre

Meilleures réponses pour « Java : méthode painComponent jamais appelée » dans :
Java: Les méthodes Voir La notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Java - L'accessibilité VoirLa notion d'accessibilité Le concept d'accessibilité (généralement appelé encapsulation) définit la possibilité qu'a le concepteur d'une classe de restreindre l'accès à certaines données, ou plus généralement à certains éléments (méthodes, classes,...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...

1

HackTrack, le 20 mar 2007 à 11:05:04
  • +1

Salut!

Essaye ceci:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class AffichagePageCarnet extends JPanel {

	private static final long serialVersionUID = 1L;


	public AffichagePageCarnet() {
		setLayout(new GridLayout(2, 8));
		setPreferredSize(new Dimension(1024, 768));
		for (int i = 0; i < 16; i++) {
			JLabel label = new JLabel("Test");
			add(label);
		}
	}

	public void paintComponent(Graphics g) {

		Graphics2D g2 = (Graphics2D) g;
		System.out.println(getClass().getResource("/images/parchemin.png"));

		ImageIcon ic = new ImageIcon(getClass().getResource(
				"/images/parchemin.png"));
		Image fond = ic.getImage();

		g2.drawImage(fond, 0, 0, 1024, 680, this);
	}
}


;-)
HackTrack

Répondre à HackTrack

2

 velociraptor, le 26 mar 2007 à 17:52:05

Problème résolu

Merci infiniment, j'ai compris où était le problème !
Je mettais en place un panel par dessus celui qui devait afficher l'image. Donc forcément, ça masquait tout !

encore merci

Alexandre

Répondre à velociraptor
Collection CommentÇaMarche.net