IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Graphisme Java Discussion :

repaint() et update() un monde mysterieux


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut repaint() et update() un monde mysterieux
    Je suis toujours sur le sudoku et j'aimerais bien modifier ma grille suivant certains evenements donc pour cela j'utilise repaint() et update() mais jpige pas tout.
    Je desire mettre une case en rouge si on a cliqué dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void mouseClicked(MouseEvent e){
    		int x = e.getX();
    		int y = e.getY();
    		state = 0;
    		System.out.println("x="+x+","+"y="+y);
    		//square = new JTextField();
    		abs = (new Double(9*x/taille)).intValue();
    		ord = (new Double(9*y/taille)).intValue();
    		repaint(taille*abs/9,taille*ord/9,taille/9,taille/9;
    		//square.setBounds(taille*abs/9,taille*ord/9,taille/9,taille/9);
    		//this.add(square);
     
    	}
    Les commentaires sont relatifs a une solution que j'avais essayé avant avec des champs de texte mais pas moyen de les faire disparaitre une fois la valeur entrée dans une case..

    Quand on entre une valeur au clavier, j'ai le traitement suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void keyTyped(KeyEvent e){
    		state = 1;
    		car = e.getKeyChar();
    		if (car >= '1' && car <= '9')
    			repaint(taille*abs/9,taille*ord/9,taille/9,taille/9);
    	}
    et donc je redefinis la methode update comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public void update(Graphics g){
    		if (state == 0){
    			paint(g);
    			g.setColor(Color.RED);
    			g.fillRect(taille*abs/9,taille*ord/9,taille/9,taille/9);
    		}
    		else if (state == 1){
    			//value = Integer.parseInt(square.getText());
    			grille[abs][ord] = (new Integer(car)).intValue();
    			paint(g);
    		}else{ 
    			for (int i = 0 ; i < 9; i++){
    				for(int j = 0 ; j < 9; j++) 
    					   g.drawString(""+grille[i][j],taille/18+taille*j/9,taille/18+taille*i/9);
    			}
    		}
     
    	}
    Seul le else de la fonction update fonctionne (quand on clique sur le bouton "resoudre" mais je l'ai pas mis ici)

    Pour finir la surcharge de paint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public void paint(Graphics g){
    		super.paint(g);
    		for(int i = 0; i <= 9; i++) {
    		    g.drawLine(taille*i/9,0,taille*i/9,taille);
    		    g.drawLine(0,taille*i/9,taille,taille*i/9);
    		}
    		for(int i = 0; i <= 3; i++) {
    		    g.drawLine(taille*i/3+1,0,taille*i/3+1,taille);
    		    g.drawLine(0,taille*i/3+1,taille,taille*i/3+1);
    		    g.drawLine(taille*i/3-1,0,taille*i/3-1,taille);
    		    g.drawLine(0,taille*i/3-1,taille,taille*i/3-1);
    		}
    		for (int i = 0 ; i < 9; i++){
    		    for(int j = 0 ; j < 9; j++) {
    		    	if (grille[i][j] != 0) 
    		    		g.drawString(""+grille[i][j],taille/18+taille*j/9,taille/18+taille*i/9);
    		    }
    		}
    Vous avez des explications (ne vous moquez pas si j'ai rien compris)

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ton composant hérite d'un composant Swing ou d'un composant AWT?

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. [XL-2003] [UserForm] Probleme pour rafraichir, update, repaint
    Par le_niak dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2009, 12h23
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59
  4. Réponses: 3
    Dernier message: 10/11/2002, 11h03
  5. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo