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...
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java: les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Java sont typées, c'est-à-dire que les données contenues dans...
Java - L'héritage VoirLa notion d'héritage Le concept d'héritage est un des concepts les plus importants de la programmation orientée objet, car il conditionne irréversiblement la façon selon laquelle un code Java est écrit. L'héritage est un mécanisme permettant de...

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