OVH Cloud OVH Cloud

[JPanel et zone Image]

5 réponses
Avatar
Manu
bonjour,
je n'arrive pas a creer une zone image (vierge) dans un JPanel.
Inserer une image existante dans un JPanel, pas de probleme...
mais creer une image vierge dans laquelle on puisse "dessiner" ensuite
dedans, impossible.
Le but recherche et de creer une zone de 300x300 px, puis differentes
classes se chargeront d'ecrire (dessiner) dedans.
Le truc est que je ne souhaite pas utiliser la methode "paint" ou
"update" pour utiliser un double buffer.

Image maBellePhoto = getToolkit().getImage ("maphoto.jpg");
//
zonePhoto cMaPhoto = new zonePhoto (100,200);
//
cMaPhoto.graph.drawImage(maBellePhoto,0,0,this)
cMaPhoto.graph.vbl();
//
public class zonePhoto extends Canvas {

Image image;
Graphics graph;
public zonePhoto (int _x, int _y) {
//image=createImage(_x,_y); marche poa...
graph=getGraphics();
}
public vbl() {
graph.drawString("test",10,20);
}
}

manu

5 réponses

Avatar
Black Myst
Manu wrote:
bonjour,
je n'arrive pas a creer une zone image (vierge) dans un JPanel.
Inserer une image existante dans un JPanel, pas de probleme...
mais creer une image vierge dans laquelle on puisse "dessiner" ensuite
dedans, impossible.
Le but recherche et de creer une zone de 300x300 px, puis differentes
classes se chargeront d'ecrire (dessiner) dedans.

Le truc est que je ne souhaite pas utiliser la methode "paint" ou
"update" pour utiliser un double buffer.
Je suis curieux de savoir comment tu espere dessiner dans ton composant

sans utiliser la méthode paint... et aussi pouquoi tu ne veux pas faire
de double buffer...

... encore un truc, la classe Canvas hérite de Component, ce n'est pas
une classe de Swing


manu


Avatar
Manu
Manu wrote:

bonjour,
je n'arrive pas a creer une zone image (vierge) dans un JPanel.
Inserer une image existante dans un JPanel, pas de probleme...
mais creer une image vierge dans laquelle on puisse "dessiner" ensuite
dedans, impossible.
Le but recherche et de creer une zone de 300x300 px, puis differentes
classes se chargeront d'ecrire (dessiner) dedans.



Le truc est que je ne souhaite pas utiliser la methode "paint" ou
"update" pour utiliser un double buffer.


Je suis curieux de savoir comment tu espere dessiner dans ton composant
sans utiliser la méthode paint... et aussi pouquoi tu ne veux pas faire
de double buffer...

... encore un truc, la classe Canvas hérite de Component, ce n'est pas
une classe de Swing


arrrggg ... comment faire alors...
tout ce que je veux c'est un objet canvas que je met dans un jpanel pour
ensuite dessiner des images ou du texte a partir d'autres objets....
doit je utiliser imageicon ?
je prend tout solution :)




manu




Avatar
Black Myst
Manu wrote:

Manu wrote:

bonjour,
je n'arrive pas a creer une zone image (vierge) dans un JPanel.
Inserer une image existante dans un JPanel, pas de probleme...
mais creer une image vierge dans laquelle on puisse "dessiner"
ensuite dedans, impossible.
Le but recherche et de creer une zone de 300x300 px, puis differentes
classes se chargeront d'ecrire (dessiner) dedans.




Le truc est que je ne souhaite pas utiliser la methode "paint" ou
"update" pour utiliser un double buffer.



Je suis curieux de savoir comment tu espere dessiner dans ton
composant sans utiliser la méthode paint... et aussi pouquoi tu ne
veux pas faire de double buffer...

... encore un truc, la classe Canvas hérite de Component, ce n'est pas
une classe de Swing



arrrggg ... comment faire alors...
tout ce que je veux c'est un objet canvas que je met dans un jpanel pour
ensuite dessiner des images ou du texte a partir d'autres objets....
doit je utiliser imageicon ?


1. Pas de melange de Swing(JPanel) et d'AWT(Canvas)
http://java.developpez.com/faq/java/?page=generalitesAWTSwing#GRAPHIQUE_AWT_melange_SWING

2. Je vois pas le rapport avec des ImageIcon

je prend tout solution :)
une methode paint qui ressemble à :


private Image image;

public void paintComponent( Graphics g ) {
if( image==null ||
image.getWidth()!=getWidth() ||
image.getHeight()!=getHeight() ) {

image = createImage(getHeight(),getWidth());
initImage(image); // code pour initialiser qqc
} else {
g.drawImage(image);
}
}

Note : Je me souviens plus du code exact, mais ca doit ressemblé au code
ci-dessus, à quelque bug pres...






manu






Avatar
Manu
Manu wrote:


Manu wrote:

bonjour,
je n'arrive pas a creer une zone image (vierge) dans un JPanel.
Inserer une image existante dans un JPanel, pas de probleme...
mais creer une image vierge dans laquelle on puisse "dessiner"
ensuite dedans, impossible.
Le but recherche et de creer une zone de 300x300 px, puis differentes
classes se chargeront d'ecrire (dessiner) dedans.





Le truc est que je ne souhaite pas utiliser la methode "paint" ou
"update" pour utiliser un double buffer.




Je suis curieux de savoir comment tu espere dessiner dans ton
composant sans utiliser la méthode paint... et aussi pouquoi tu ne
veux pas faire de double buffer...

... encore un truc, la classe Canvas hérite de Component, ce n'est
pas une classe de Swing




arrrggg ... comment faire alors...
tout ce que je veux c'est un objet canvas que je met dans un jpanel
pour ensuite dessiner des images ou du texte a partir d'autres
objets.... doit je utiliser imageicon ?



1. Pas de melange de Swing(JPanel) et d'AWT(Canvas)
http://java.developpez.com/faq/java/?page=generalitesAWTSwing#GRAPHIQUE_AWT_melange_SWING


2. Je vois pas le rapport avec des ImageIcon
en fait j'ai vu beaucoup d'exemple ou les mecs mettent des imageicon

dans des jlabel pour ensuite pouvoir les manipuler plus facilement, est
ce la bonne solution... ca je n'en sais rien.




je prend tout solution :)
une methode paint qui ressemble à :


private Image image;

public void paintComponent( Graphics g ) {
if( image==null ||
image.getWidth()!=getWidth() ||
image.getHeight()!=getHeight() ) {

image = createImage(getHeight(),getWidth());
initImage(image); // code pour initialiser qqc
} else {
g.drawImage(image);
}
}



c'est marrant c'est exactment ce que j'avais fais... dans la mesure ou
createImage renvoie null dans toutes autres methode... j'avais été
obligé de le mettre dans cette methode (enfin moi dans le paint de mon
"extend canvas") mais je ne trouvais pas ca tres propre et d'autant que
si je veux dessiner ensuite dedans via l'exterieur je suis bloque.
faut donc que je reteste tout.

Note : Je me souviens plus du code exact, mais ca doit ressemblé au code
ci-dessus, à quelque bug pres...






manu








Avatar
Black Myst
je prend tout solution :)
une methode paint qui ressemble à :


private Image image;

public void paintComponent( Graphics g ) {
if( image==null ||
image.getWidth()!=getWidth() ||
image.getHeight()!=getHeight() ) {

image = createImage(getHeight(),getWidth());
initImage(image); // code pour initialiser qqc
} else {
g.drawImage(image);
}
}



c'est marrant c'est exactment ce que j'avais fais... dans la mesure ou
createImage renvoie null dans toutes autres methode... j'avais été
obligé de le mettre dans cette methode (enfin moi dans le paint de mon
"extend canvas") mais je ne trouvais pas ca tres propre et d'autant que
si je veux dessiner ensuite dedans via l'exterieur je suis bloque.
faut donc que je reteste tout.

Note : Je me souviens plus du code exact, mais ca doit ressemblé au
code ci-dessus, à quelque bug pres...



Plus exactement, create Image retourne null tant que le panel n'est pas
lié à l'ecran... cad tant qu'il n'a pas été affiché au moins une fois.

Je vois pas trop en quoi tu est bloqué pour dessiner dedans depuis
l'exterieur...