Problème de "Graphics" - Java - Programmation
Marsh Posté le 12-08-2004 à 10:53:54
Ben pour ne pas effacer ton dessin tu dois justement modifier la méthode paint.
Le plus simple pour toi serait peut être de tout dessiner dans un buffer non visible à l'écran et dans la méthode paint afficher le contenu de ton buffer.
Marsh Posté le 12-08-2004 à 11:09:31
A peu de chose pres voici le type de classe que je souhaite. Comment introduire de "double buffering" la dedans?
private class pane extends JPanel implements MouseListener
{
public pane()
{
addMouseListener(this);
}
public void mouseClicked(MouseEvent e)
{
dessine(Color.BLACK,e.getX(),e.getY());
}
private void dessine (Color c, int x, int y)
{
Graphics gc = getGraphics ();
gc.fillOval(100, 100, 10, 10);
}
}
Marsh Posté le 12-08-2004 à 11:38:14
Tutorial sur le double buffering:
http://java.sun.com/docs/books/tut [...] ering.html
Marsh Posté le 12-08-2004 à 11:57:09
berns a écrit : A peu de chose pres voici le type de classe que je souhaite. Comment introduire de "double buffering" la dedans? |
Par défaut Swing fait du doubleBuffering il suffit de savoir quelle methodes surchargée
essaie le code suivant
Code :
|
Marsh Posté le 12-08-2004 à 11:59:48
il ya une petite erreur dans le code que je t'ai envoyé precedemment
voici le code que je voulais t'nevoyer
Code :
|
dis moi si ça fait ce que tu veux
Marsh Posté le 12-08-2004 à 12:01:32
Ce code ne peut fonctionner vu que paintComponent est une surcharge et donc ne peut recevoir en argument le "MouseEvent e"...
Marsh Posté le 12-08-2004 à 12:06:57
d'ailleurs je ne vois pas a quoi sert tes parametres x et y dans la methode
Code :
|
vu que tu ne les utilise pas
essaie donc ce code
Code :
|
Marsh Posté le 12-08-2004 à 12:15:19
désolé c'est ma faute ma methode dessine est la suivante
private void dessine (Color c, int x, int y)
{
Graphics gc = getGraphics ();
gc.fillOval(x, y, 10, 10);
}
elle me pemet de dessiner un point a l'endroit du clic
Marsh Posté le 12-08-2004 à 10:43:32
Voici mon probleme...
j'ai un JPanel sur lequel je dessine a l'aide d'un "Graphics" en cliquant sur la souris.
Pour cela, je place le code qui sert a dessiner dans la fonction "mouseclicked". Je n'ai donc pas de methode paint.
je veut ouvrir une boite de dialogue a l'aide de la fonction
JOptionPane.showInputDialog mais cette derniere s'ouvre au milieu de l'ecran et efface les dessin en dessous.
Serait-il possible:
1)de ne pas effacer le dessin
2)de déplacer ce type de fenetre afin de ne pas superposer la fenetre principale?
Merci d'avance