Récupérer un lien vers une JFrame
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 :calim2:
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 ? :aie:
É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:
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:
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:ccool:
demande daide pr débutante en java
bonjour tout le monde , voilà mon code lorsque je l'exécute ça me donne erreur :
java.lang.NoClassDefFoundError: Switch/Switch
Exception in thread "main"
merci de m'expliquer c'est quoi le souci svp je toute débutante en java ; merci d'avance
------------------------------
package Switch;
public class Switch {
public static void main(String[] args) {
// afficher la valeur entrée
System.out.println("la valeur de la tva est" + args[0]);
int param = Integer.parseInt(args[0]);
float montant = 2000;
switch (param) {
case 10: {
montant *= 1.1;
break;
}
case 20: {
montant *= 1.2;
break;
}
case 30: {
montant *= 1.3;
break;
}
default:
montant *= 1.2;
}
// afficher le montant de la facture
System.out.println("le montant ttc est :" + (int) montant);
}
}