Bonsoir
Tout d'abord merci pour votre lecture.

Je suis toujours en train d'apprendre à créer une interface swing et je bloque sur un point crucial
Mes lectures sont :
http://baptiste-wicht.developpez.com...?page=fenetres
et la FAQ GUI

D'après ce que j'ai lu il est fortement conseillé de créer un thread à chaque fois que l'on veut faire du graphique, afin de ne pas ralentir l'interface graphique

Ma question est donc tout simple
Je souhaite faire :
1 - invocation d'une JFrame quasi vide (pour montrer que le programme est parti, voir je rajouterais une barre de chargement de base)
2 - Effectuer un traitement long
3 - Modifier ma fenêtre, ajouter par exemple des buttons
Ma question : comment dois-je m'y prend ?

Étant donné que je crée ma fenêtre dans un thread, il m'est ensuite impossible d'y accèder.
Les différents codes exemple que je trouve n'utilise pas de thread et du coup la JFrame est connu par le main, sauf que là, ça ne marche pas

Pour l'instant j'ai une classe contenant mon main qui ressemble à ceci
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
 
public class jeu {
	public static void main (String [] args)throws IOException {
	//[..]
	Sting s = "";
	switch (i) {
		case 1 : s = "Morpion"; break;
		case 2 : s = "Puissance 4"; break;
		default : System.out.println("Erreur dans l'instancation des regles"); break;
}
	SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				//On crée une nouvelle instance de notre JDialog
				Gui fenetre = new Gui(s);
				fenetre.setVisible(true);//On la rend visible
			}
	});
	//[...] mon traitement long
	// Ici j'aimerais modifier ma fenêtre ajouter des bouton en fonction du traitement long
	// je présume que l'ajout se ferra via de nouveau un thread afin de séparer application et GUI
}
ma classe GUI
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
import java.awt.*;
import javax.swing.*;
 
 
public class Gui extends JFrame{	
 
	private static final long serialVersionUID = 1L;
 
	public Gui(String title){
		super();
		build(title);//On initialise notre fenêtre
	}
 
	private void build(String title){
		setTitle(title); //On donne un titre à l'application
		setSize(320,240); //On donne une taille à notre fenêtre
		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
		setResizable(true); //On autorise la redimensionnement de la fenêtre
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
		setContentPane(buildContentPane());
	}
 
	private JPanel buildContentPane(){
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		panel.setBackground(Color.white);
		JLabel label = new JLabel("Match en cours");
		panel.add(label);
		return panel;
	}
 
	public JButton createButton(String loc_icon) {
		JButton but = new JButton(loc_icon);
		return but ;
	}
 
	public JButton addButton(JPanel p, JButton but){
		p.add(but);
		return but;
	}
}
Merci de votre aide