Le fonctionnement de repaint

Soyez le premier à donner votre avis sur cette source.

Vue 4 234 fois - Téléchargée 340 fois

Description

Le but de cette source est de vous faire comprendre comment fonctionne la méthode repaint. En effet, nous n'appelons que rarement cette méthode, elle est néanmoins appelée très souvent et pas uniquement lorsque l'utilisateur agit sur le programme.

La source propose un JPanel qui lorsque sa méthode repaint est appelée change de couleur aléatoirement. Vous pouvez essayer de réduire la fenêtre, de la faire sortir de l'écran, de faire passer d'autres fenêtres au dessus.

Vous serez peut être surpris du résultat.

La capture associée à la source a été réalisée en faisant passer au dessus de la fenêtre une autre fenêtre.

Source / Exemple :


import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TestRepaint extends JPanel {

	private static final long serialVersionUID = -3228250872355821391L;
	private List<Color> couleurs;

	public TestRepaint(){
		couleurs=new ArrayList<Color>();
		couleurs.add(Color.BLACK);
		couleurs.add(Color.BLUE);
		couleurs.add(Color.CYAN);
		couleurs.add(Color.DARK_GRAY);
		couleurs.add(Color.GRAY);
		couleurs.add(Color.GREEN);
		couleurs.add(Color.LIGHT_GRAY);
		couleurs.add(Color.MAGENTA);
		couleurs.add(Color.ORANGE);
		couleurs.add(Color.PINK);
		couleurs.add(Color.RED);
		couleurs.add(Color.WHITE);
		couleurs.add(Color.YELLOW);
	}

	private Color getRandomColor(){
		int indice=(int)(couleurs.size()*Math.random());
		return couleurs.get(indice);
	}

	@Override
	public void paintComponent(Graphics g){
		g.setColor(getRandomColor());
		g.fillRect(0, 0, getWidth(), getHeight());
	}

	public static void main(String[] args){
		JFrame f = new JFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(300, 300);
		f.setLocationRelativeTo(null);
		f.add(new TestRepaint());
		f.setVisible(true);
	}

}

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
Bonjour,

Merci pour cette précision. C'est vrai que ce mécanisme est dépendant de l'os, il ne fonctionne d'ailleurs pas de la même façon sous un Linux et sous un Windows.
uhrand
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9
Ici il ne s'agit pas du fonctionnement de la méthode repaint() mais d'une illustration des demandes de peintures déclenchées par le système d'exploitation. Quand une opération de peinture est déclenchée par le système, le système demande au composant d'afficher son contenu, généralement pour une des raisons suivantes:

* Le composant est affiché pour la première fois visiblement à l'écran.
* Le composant a été redimensionné.
* Le composant a été endommagé et doit être réparé.

Pour permettre aux applications de déclencher eux-mêmes une opération de peinture, l'AWT fournit les méthodes java.awt.Component suivantes pour que les programmes puissent demander un processus de peinture asynchrone:

public void repaint()
public void repaint(long tm)
public void repaint(int x, int y, int width, int height)
public void repaint(long tm, int x, int y, int width, int height)

Cordialement,
André
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
Bonjour,

Merci d'avoir commenté mais, je ne comprend rien à ton commentaire.
khilio
Messages postés
8
Date d'inscription
mercredi 3 août 2011
Statut
Membre
Dernière intervention
16 janvier 2012

très simple travaille et absence des effort

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.