Bonjour,

j'ai un problème d'affichage d'images. Je sais comment afficher une image dans un panel et tout ce qui va avec. Seulement mon problème est que mon application ne doit pas afficher l'image à son lancement, mais uniquement lorsque l'on clique sur un bouton. Or, quand je clique sur ce bouton, l'image ne vient pas s'afficher dans le panel. Si je redimensionne la fenêtre après avoir cliqué sur ce bouton, l'image s'affiche correctement. Cela semble être donc un prob de rafraîchissement ( pourtant je fais un panel.repaint...)

Voici le code de ma fenêtre principale:

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 
 
package ch.hearc.camtracker;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.rmi.Naming;
 
 
class CamTracker extends JFrame implements ActionListener
{
 
	// Variables declaration
	Jpanel pnAffichage;
	...                   
 
 
//------Constructeur de la fenêtre----------------------------------------	
	public CamTracker() 
	{
 
		//Création des composants
        	cbServer1 = new JComboBox();
       		....
 
		//Création et ajout du menu
        	jMenuBar1.add(jMenuFile);
   		...
        	setJMenuBar(jMenuBar1);
 
 
		//Taille et position des composants
		pnAffichage.setBounds(10,10,352,288);
		...
 
		//Ajout des composants aux panels
		pnZone.add(btnCapture);
		pnZone.add(btnOk);
		pnZone.add(pnAffichage);
		...
 
		//Disposition des panels
		pnHaut.setLayout(new BorderLayout());
		pnHaut.setPreferredSize(new Dimension(600,300));
		pnBas.setLayout(new BorderLayout());
		pnBas.setPreferredSize(new Dimension(600,300));
 
		pnHaut.add(pnZone,BorderLayout.CENTER);
		pnBas.add(pnModule,BorderLayout.CENTER);
 
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(pnHaut,BorderLayout.NORTH);
		getContentPane().add(pnBas,BorderLayout.SOUTH);
 
		//Ajout un écouteur sur les éléments
		btnCapture.addActionListener(this);
		btnOk.addActionListener(this);
 
 
	}
 
    /*
     *Méthode de traitement des événements générés par les composants munis d'un écouteur
     */
    public void actionPerformed(ActionEvent ev)
    {
    	if(ev.getSource() == btnCapture)
    	{
    		...
	}
 
	if(ev.getSource() == btnOk)
	{
		GrayImage l_objGray = null;
 
		try
		{
			//instanciation de l'objet distant: (adresse du module inversion)
			l_objGray = (GrayImage)Naming.lookup("rmi://157.26.98.2/" + "MyGrayImage");
			//Invocation de la méthode distante: (méthode remote de inversion)
			//getObject retourne un arraybyte
			ImageIcon im = new ImageIcon(l_objGray.getObject());
			JLabel label1= new JLabel(im); 
			pnAffichage.add(label1);
      			pnAffichage.repaint();		
 
		}
        	catch(Exception e)
		{
			System.out.println("Gray exception : " + e.getMessage());
			e.printStackTrace();
		}
 
	}
 
    }                                      
 
//--------------------------------------------------------------------------
	public static void main(String args[]) {
		System.out.println("Starting CamTracker...");
		CamTracker mainFrame = new CamTracker();
		mainFrame.setSize(600, 600);
		mainFrame.setTitle("CamTracker");
		mainFrame.setVisible(true);
	}
}
Merci d'avance de vos réponses