Problème de "Graphics"

Problème de "Graphics" - Java - Programmation

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

Reply

Marsh Posté le 12-08-2004 à 10:43:32   

Reply

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.


---------------
Light is right
Reply

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);
        }
}

Reply

Marsh Posté le 12-08-2004 à 11:38:14    

Tutorial sur le double buffering:
http://java.sun.com/docs/books/tut [...] ering.html


---------------
Light is right
Reply

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 :
  1. private class pane extends JPanel implements MouseListener
  2. {
  3.         public pane()
  4.         {
  5.             addMouseListener(this);
  6.         }
  7.         public void paintComponent(Graphics g){
  8. dessine(Color.BLACK,e.getX(),e.getY());
  9. }
  10.         public void mouseClicked(MouseEvent e)
  11.         {
  12.           repaint();
  13.         }
  14.         private void dessine (Color c, int x, int y)
  15.         {
  16.             Graphics gc = getGraphics ();
  17.             gc.fillOval(100, 100, 10, 10);
  18.         }
  19. }


 
 


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
Reply

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 :
  1. private class pane extends JPanel implements MouseListener
  2.   {
  3.             public pane()
  4.             {
  5.                   addMouseListener(this);
  6.             }
  7.             public void paintComponent(Graphics g){
  8.             dessine(g,Color.BLACK,e.getX(),e.getY());
  9.             }
  10.             public void mouseClicked(MouseEvent e)
  11.             {
  12.                 repaint();
  13.             }
  14.             private void dessine (Graphics g,Color c, int x, int y)
  15.             {
  16.                   g.fillOval(100, 100, 10, 10);
  17.             }
  18.   }


 
dis moi si ça fait ce que tu veux :??:


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
Reply

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"...

Reply

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 :
  1. dessine(..)


vu que tu ne les utilise pas
essaie donc ce code
 

Code :
  1. private class pane extends JPanel implements MouseListener
  2.     {
  3.                 public pane()
  4.                 {
  5.                         addMouseListener(this);
  6.                 }
  7.                 public void paintComponent(Graphics g){
  8.                   dessine(g,Color.BLACK);
  9.                 }
  10.                 public void mouseClicked(MouseEvent e)
  11.                 {
  12.                       repaint();
  13.                 }
  14.                 private void dessine (Graphics g,Color c)
  15.                 {
  16.                         g.fillOval(100, 100, 10, 10);
  17.                 }
  18.     }


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein
Reply

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


Message édité par berns le 12-08-2004 à 12:15:53
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed