2017-06-03 4 views
0

Donc, j'ai pris une classe AP sur Java, et dans la classe, nous n'avons jamais vraiment passé en revue repaint(), et comment l'utiliser correctement. J'ai également cherché sur Internet, et personnellement, je n'ai trouvé aucune réponse sur la façon standard d'appeler repaint(). Sommes-nous censés appeler la méthode repaint() de la classe main comme suit?Bon moyen pour repeindre JComponent

import java.awt.*; 
import javax.swing.*; 

public class RepaintExample{ 

    public static void main(String[] args){ 

     JFrame frame = new JFrame(); 
     JComponent component = new JComponent(); 
     frame.add(component); 
     frame.repaint(); 
    } 

} 

Ou que j'appelle le JComponent.repaint() Comme ce

import java.awt.*; 
import javax.swing.*; 

public class RepaintExample{ 

    public static void main(String[] args){ 

     JFrame frame = new JFrame(); 
     JComponent component = new JComponent(); 
     frame.add(component); 
     component.repaint(); 
    } 

} 

Ou, sont les deux approches mal, et JComponent.repaint() devrait être appelé à partir de la paintComponent comme indiqué ici:

import java.awt.*; 
import javax.swing.*; 

public class ComponentRepaintExample extends JComponent{ 

    public void paintComponent(Graphics g){ 

     //Draw stuff 
     for(int i = 0; i < 10; i++){ 
      //Draw stuff 
      this.repaint(); 
     } 
    } 

} 

Il est tout à fait possible que les trois approches sont fausses. Toute aide pour comprendre comment utiliser correctement la méthode repaint() est appréciée. Le sujet entier est très enveloppé à moi, donc je m'excuse si n'importe quelle terminologie que j'utilise est incorrecte. Tout merci d'avance.

Répondre

2

Pourquoi pensez-vous que vous devez appeler repaint()?

La méthode repaint() est appelée automatiquement par un composant Swing lorsqu'une propriété du composant est modifiée. Par exemple, si vous avez un JLabel et que vous appelez setText(...) ou setIcon(...), ces méthodes invoqueront automatiquement repaint().

Vous n'appelez JAMAIS repaint() à partir d'une méthode de peinture.

Si vous faites de la peinture personnalisée, votre code doit être structuré comme n'importe quel autre composant Swing. C'est vous créez des méthodes getter/setter pour vos composants personnalisés pour modifier les propriétés du composant. Dans la méthode setter, vous appelez repaint().