Bonjour à toutes et à tous,

Dans JFrame, j'ai placé un JPanel dans lequel j'ai dessiné un rectangle et un cercle.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Panneau extends JPanel{
    public Panneau(String titre){
        setBounds(10, 10, 200, 100);
    }
 
    public void paint(Graphics g){
        setBackground(Color.WHITE);
        g.clearRect(0, 0, 200, 100);
        Color c = g.getColor();
        g.setColor(Color.RED);
        g.fillRect(10, 10, 50, 50);
        g.setColor(Color.BLUE);
        g.fillOval(100, 10, 50, 50);
        g.setColor(c);
Je compile, je lance : mon rectangle et mon cercle se dessinent : OK.

Je déplace la fenêtre de mon appli vers l'extérieur de l'écran et, lorsque je la ramène dans l'écran, le rectangle et le cercle se redessinent au fur et à mesure que la fenêtre rentre dans l'écran.

Même chose si je masque le fenêtre de mon appli par une autre et que je la démasque : le rectangle et le cercle se redessinent.


Maintenant, je souhaite, à partir d'un évènement extérieur (click sur un bouton par exemple (à 'laide de lEDI NetBeans)) dessiner une ligne dans ce "panneau"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt){
        Graphics gE = panneau.getGraphics();
        gE.drawLine(10, 10, 100, 100);
    }
Quand je lance l'appli et que je clique sur le bouton, la ligne est bien dessinée.

Problème : Si maintenant je refais les déplacements sus-cités, si le rectangle et le cercle se redessinent bien, la ligne ne se redessine plus.

Comment faire pour qu'elle se redessine ?

D'une manière générale, comment faire pour que des actions de dessin qui ne sont pas dans la méthode "paint" du composant soient redessinées ?

Ca fait deux jours que je tourne en rond sur le WEB et (mal cherché sûrement) je n'ai rien trouvé ! Ce problème est pourtant basique.

Merci de votre aide.

Pierre.