begin process at 2010 02 09 21:08:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

API

 > 

probleme de raffraichissement d'image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme de raffraichissement d'image

lundi 5 juillet 2004 à 11:08:25 | probleme de raffraichissement d'image

Azdruyel


Bonjour a tous!
Aujourd'hui,un nouveau jour, et donc un nouveau probleme!!!
Alors voila, mon truc c'est que j'affiche en fond dans un JPanel une image (cela ce fait au moment de la creation de ce dernier avec la methode paintComponents), mais lorsque je change d'image de fond, et ben j'arrive pas a raffraichir le JPanel pour que l'on puisse voir la nouvelle image.
Pour ceux qui ont le temps ou que ca interesse, bah je vous met le code du JPanel que j'ai deja fait, et si quelqu'un avait une idee de comment faire le refresh(), et ben ca me sauverai grandement!!!:)

import javax.swing.*;
import java.awt.Image;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;


/**
*
* @author farid
*
* La classe ImagePanel permet de créer un Panel permettant d'aficher une image en fond
* Cette classe va nous permettre d'afficher l'image que l'on va charger
*/
public class ImagePanel extends JPanel
{
private BufferedImage image;
private int w; // largeur de l'image
private int h; // hauteur de l'image
private int x,y; // coordonnées du coin sup gauche de l'image

private int x1=0,y1=0; // coordonnées du coin sup gauche de la zone d'annotation
private int x2=0,y2=0; // largeur et hauteur de la zone d'annoation

private int taille=13; //taille de la police de la zone d'annotation

private JTextArea are;
private Color couleurChoisie;
private JColorChooser tcc;
private Choice choixm;
private Image mon_image;
private Toolkit toolkit;

/**
* Le constructeur :
* @param fileImg le fichier de l'image.
* @param x coordonnée x du coin supérieur gauche.
* @param y coordonnée y du coin supérieur gauche.
* @param width largeur de l'image.
* @param height hauteur de l'image.
*/
public ImagePanel(File fileImg,int x,int y,int width,int height)
{
super();

/** Accès au toolkit : **/
toolkit = Toolkit.getDefaultToolkit();



/**si le fichier est vide on charge l'image fichierVide**/
if(fileImg==null)
{
mon_image = toolkit.getImage(this.getClass().getResource("fichierVide.jpg"));
}
/**sinon on recupère l'adresse du fichier selectionné**/
else
{
mon_image=toolkit.getImage(fileImg.getAbsolutePath());
}

/**on convertit l'image en BufferedImage**/
image = toBufferedImage(mon_image);


this.x = x;
this.y = y;
w = width;
h = height;

/**Zone de Texte permettant d'effectuer les annotations**/
are=new JTextArea();
are.setForeground(Color.black);
are.setFont(new Font("Comic sans MS",Font.BOLD,taille));
are.setSelectionColor(Color.yellow);
are.setOpaque(false); //on rend la zone de texte invisible
are.setBorder(BorderFactory.createLineBorder(Color.black));
are.setLineWrap(true); //On souhaite un retour à ligne automatique
are.setWrapStyleWord(true); //On souhaite que les mots ne soient pas coupés

//add(are);
}



/**
* Gere l'affichage graphique du JPanel, ainsi que le refraichissement.
*/
public void paintComponent(Graphics g)
{
Graphics2D g2 =(Graphics2D) g;
super.paintComponent(g2);
g2.drawImage(image,x,y,w,h,null);
}



public void paint( Graphics g )
{
Graphics2D g2 =(Graphics2D) g;
super.paint( g2 );

/**Couleur du rectangle representant la zone d'annotation**/
g2.setColor(couleurChoisie);

/**Degré de transparence de la zone d'annotation (ici transparence = 30% --> 0.3f)**/
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f )); //

/**Tracé du rectangle representant la zone d'annotation**/
g2.fillRect(
x1, // x
y1, // y
x2, // largeur
y2); // hauteur
}



/**
* Gere les evenements de glissement de sourie (bouton presse)
*/
public void mouseDragged(MouseEvent e)
{
x2=(int)(e.getPoint().getX())-x1;
y2=(int)(e.getPoint().getY())-y1;

are.setSize(x2,y2);
this.repaint();
}


/**
* Gerer les evenement lors du deplacement de la sourie
*/
public void mouseMoved(MouseEvent e)
{
}


/**
* Evenement appelle alors d'un clic de sourie
*/
public void mouseClicked(MouseEvent e)
{
}


/**
* Evenement appelle alors que la sourie sort de les frontieres d'un composant
*/

/**
* Gere les evements au moment ou le bouton de la souris est presse
*/
public void mousePressed(MouseEvent e)
{
x1 = (int)(e.getPoint().getX()-7);
y1 = (int)(e.getPoint().getY()-30);
are.setLocation(x1,y1);
}


/**
* Gere les evenements quand le bouton de souris est relache apres glissement
*/
public void mouseReleased(MouseEvent e)
{
}


/**
* Permet de récuperer la couleur du JColorChooser
*/
public Color getCouleur()
{
return couleurChoisie;
}


public BufferedImage toBufferedImage(Image image) {
/* On test si l'image n'est pas déja une instance de BufferedImage */
if( image instanceof BufferedImage ) {
/* cool, rien à faire */
return( (BufferedImage)image );
} else {
/* On s'assure que l'image est complètement chargée */
image = new ImageIcon(image).getImage();

/* On crée la nouvelle image */
BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB );
Graphics g = bufferedImage.createGraphics();
g.drawImage(image,0,0,null);
g.dispose();

return( bufferedImage );
}
}

/**
* @return Returns the image.
*/
public BufferedImage getImage() {
return image;
}
/**
* @param image The image to set.
*/
public void setImage(BufferedImage image) {
this.image = image;
}

/**
* @return Returns the mon_image.
*/
public Image getMon_image() {
return mon_image;
}
/**
* @param mon_image The mon_image to set.
*/
public void setMon_image(Image mon_image) {
this.mon_image = mon_image;
}


/**
* @return Returns the h.
*/
public int getH() {
return h;
}
/**
* @param h The h to set.
*/
public void setH(int h) {
this.h = h;
}
/**
* @return Returns the w.
*/
public int getW() {
return w;
}
/**
* @param w The w to set.
*/
public void setW(int w) {
this.w = w;
}
/**
* @return Returns the x.
*/
public int getX() {
return x;
}
/**
* @param x The x to set.
*/
public void setX(int x) {
this.x = x;
}
/**
* @return Returns the x1.
*/
public int getX1() {
return x1;
}
/**
* @param x1 The x1 to set.
*/
public void setX1(int x1) {
this.x1 = x1;
}
/**
* @return Returns the x2.
*/
public int getX2() {
return x2;
}
/**
* @param x2 The x2 to set.
*/
public void setX2(int x2) {
this.x2 = x2;
}
/**
* @return Returns the y.
*/
public int getY() {
return y;
}
/**
* @param y The y to set.
*/
public void setY(int y) {
this.y = y;
}
/**
* @return Returns the y1.
*/
public int getY1() {
return y1;
}
/**
* @param y1 The y1 to set.
*/
public void setY1(int y1) {
this.y1 = y1;
}
/**
* @return Returns the y2.
*/
public int getY2() {
return y2;
}
/**
* @param y2 The y2 to set.
*/
public void setY2(int y2) {
this.y2 = y2;
}
}


Voila et pis merci a tous :)
lundi 5 juillet 2004 à 11:58:58 | Re : probleme de raffraichissement d'image

toffe12


je suppose que tu veux rafraichier lorsque tu emploie setImage ou setMon_Image, iol faut rajouter dans ces fonction la methode repaint() qui redessinera ton jpanel
lundi 5 juillet 2004 à 12:30:53 | Re : probleme de raffraichissement d'image

Azdruyel


Alors si ca pouvait raffraichir quand je fais setMon_Image, bah c clair que ca serait bien cool, et le prob c que je n'arrive pas a trouver la fonction pour redessiner mon panel, du coup je me retrouve tout bloque et c'est pour ca que je lance mon appel : "AU SECOUUUUUUUUUUUUUURS!!!"
Voila
lundi 5 juillet 2004 à 15:28:48 | Re : probleme de raffraichissement d'image

Asrull

tite précision.
ton code est illisible je m'explique, je sait pas avec quel outil tu bosses en java (perso c ultraedit) mais le coup des commentaire inutiles qui saturent le source, ça m'irrite tellement le cerveau que je n'arrive pas à lire (ct mon coup de tête.
cela mis à part (mais je te dis tout ça à l'aveugle).
Je comprend pas trop ce que tu veux dire par redessiner ton panel. repaint redessine ton panel. Par contre un problème qui peut se poser c'est que le repaint soit lancé avant même que l'image suivante soit chargée en mémoire, Utilise tu un MediaTracker ? (j'ai vu qq part un bufferedImage mais suis pas sur que ce soit suffisant)

Oobaï TaPou !
lundi 5 juillet 2004 à 15:41:03 | Re : probleme de raffraichissement d'image

Asrull

mais toffe12 a raison il te manque un repaint() dans setImage et setMon_Image. Ton Instruction pour mesurer le chargement de l'image new ImageIcon().getImage() brrr ... c moyen. le MediaTracker te donne beaucoup plus de contrôle.

Oobaï TaPou !
lundi 5 juillet 2004 à 21:19:46 | Re : probleme de raffraichissement d'image

Azdruyel


Bon dans un premier temps, merci a tous les 2 d'avoir tout de meme mater le code, j'ai eu honte quand je l'ai mis comme ca mais c'est que mon patron me mettait la pression avant que je l'envoie chier, du coup j'ai fait a la va vite!!!
Alors je reprend en plus cool vu que ma journee est fini.
Donc je bosse sous Eclipse et je remet le code sans les commentaire pour ton cerveau Asrull , ca seront con de choper une meningite a cause d'une irritation aigue du cerveau!!!

import javax.swing.*;
import java.awt.Image;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;


public class ImagePanel extends JPanel
{
private BufferedImage image;
private int w;
private int h;
private int x,y;

private int x1=0,y1=0;
private int x2=0,y2=0;

private int taille=13;

private JTextArea are;
private Color couleurChoisie;
private JColorChooser tcc;
private Choice choixm;
private Image mon_image;
private Toolkit toolkit;


public ImagePanel(File fileImg,int x,int y,int width,int height)
{
super();

toolkit = Toolkit.getDefaultToolkit();

if(fileImg==null)
{
mon_image = toolkit.getImage(this.getClass().getResource("fichierVide.jpg"));
}
else
{
mon_image=toolkit.getImage(fileImg.getAbsolutePath());
}

image = toBufferedImage(mon_image);


this.x = x;
this.y = y;
w = width;
h = height;

are=new JTextArea();
are.setForeground(Color.black);
are.setFont(new Font("Comic sans MS",Font.BOLD,taille));
are.setSelectionColor(Color.yellow);
are.setOpaque(false);
are.setBorder(BorderFactory.createLineBorder(Color.black));
are.setLineWrap(true);
are.setWrapStyleWord(true);
}


public void paintComponent(Graphics g)
{
Graphics2D g2 =(Graphics2D) g;
super.paintComponent(g2);
g2.drawImage(image,x,y,w,h,null);
}



public void paint( Graphics g )
{
Graphics2D g2 =(Graphics2D) g;
super.paint( g2 );

g2.setColor(couleurChoisie);

g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f ));

g2.fillRect(x1, y1, x2, y2);
}



public BufferedImage toBufferedImage(Image image) {
if( image instanceof BufferedImage ) {
return( (BufferedImage)image );
} else {
image = new ImageIcon(image).getImage();

BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB );
Graphics g = bufferedImage.createGraphics();
g.drawImage(image,0,0,null);
g.dispose();

return( bufferedImage );
}
}

}

Pour le ImageIcon().getImage(), c'est du code que j'ai choper sur le site, sinon mon probleme est que je ne sais pas comment faire le repaint(), ni que les mediatracker existaient, mais je vais aller me documenter demain!!!
Enfin voila et toutes mes excuses pour la premiere version du code, et encore merci a vous 2


Cette discussion est classée dans : public, int, image, void, return


Répondre à ce message

Sujets en rapport avec ce message

afficher la position du curseur [ par fatimazahrazaidi ] salut, je cherche a determiner la position du curseur sur une image une fois que je click sur une position le curseur reste tjr a sa place et les coor JTable- clic sur image [ par thassa ] bonjour,Le code ci-dessous affiche un tableau contenant des images.le problème est que si je clique pour la premiere fois sur l'image pour afficher un Utiliser l'état d'une case à cocher dans une JTable pour faire une requette SQL [ par baratribord ] Bonjour,J'ai écrit un programme qui lit les informations d'une base de données MySql et qui les affichent dans une JTable.A cette JTable j'ai rajouté Utiliser l'état d'une case à cocher dans une JTable pour faire une requette SQL [ par baratribord ] /* j'ai mis également ce message dans la partie débutant ayant repris la programmation après un long moment d'arrêt sans doute ce message est mieux iç affichage d'un fichier xml dans un table [ par samira46 ] salut, bon j'ai un petit pb et je veux l'aide si vous voulez,bon j'ai un fichier xml et je veux afficher ce fichier dans un table mais l'affichage se animation qui ne réagit pas [ par natou ] Bonjour à tous,       Je dois créer un applet qui implémente "Runnable".  Je dois y ajouter un thread qui lance une petite animation toute simple.  Ce Affichez Image en Java [ par lowpien69 ] Bonjour, Bonjour, j'essaye d'ecrire un programme qui affiche 8 images et qui affiche une image dans lèappletviewer chaque fois qu'on clique dessus. j' utilisation d'un vecteur dans TableModel d' un Jtable [ par gaouinformaticien ] salut à tous je voudrais savoir comment remplir un vecteur definir dans le model d'un Jtable.voici ce le code que j'ai écrit.import javax.swing.*;impo Arbre de decision:JTree non affiché!!svp aidez moi [ par lucioamine ] J'ai essayé sans cesse de pouvoir afficher le Jtree mais j'arrive pas.J'utilise l'algorithme ID3 de Quilan. Mon projet contient 5 classes: -main -Tabl Besoin d'aide création jeu d'échecs [ par laura0813 ] Bonjour, Je suis en deuxième année de licence et j'ai un projet informatique à réaliser. C'est un jeu d'échecs sans intelligence artificielle gérant l


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales