[Conception] Dialogue d'attente
Bonjour,
J'ai voulu faire un dialogue d'attente (cad avec un message et un JProgressBar, le tout sur une image de fond), et je me heurte au probleme suivant: quand j'instancie ma classe, le dialogue s'affiche, mais quand je fais appel au stepIt() ou au setMessage(), rien ne se passe, les éléments d'affichage (JLabel et JProgressBar) ne bougent pas. Quelqu'un aurait une idée de pourquoi?
source:
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 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
|
package interfaces;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
import java.io.*;
import javax.imageio.*;
/** Classe créant un dialogue d'attente contenant une JProgressBar,
* ainsi qu'un JLabel détaillant les étapes en cours
**/
public class DialogueAttente extends JFrame
{
// JLabel d'affichage de message
public JLabel message = new JLabel("Attente...");
//Barre de progression
public JProgressBar barre = new JProgressBar();
//Panel avec fond d'image
public MonPanelAvecFond panel;
public DialogueAttente(int taille)
{
barre = new JProgressBar(0, taille);
panel = new MonPanelAvecFond(barre, message);
add(panel);
setSize(305, 325);
setAlwaysOnTop(true);
}
// Pour passer a l'etape suivante
public void stepIt()
{
panel.stepIt();
}
//Pour changer le message du JLabel
public void setMessage(String nouveau)
{
panel.setMessage(nouveau);
}
//Classe permettant de generer un JPanel avec un image en fond
private class MonPanelAvecFond extends JPanel
{
public JLabel message = new JLabel();
public JProgressBar barre = new JProgressBar();
public MonPanelAvecFond(JProgressBar barre, JLabel message)
{
super();
this.message = message;
this.barre = barre;
GridBagLayout layout = new GridBagLayout();
GridBagConstraints contraintes = new GridBagConstraints(1, 1, 1, 1, 10.0, 10.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(10, 10, 10, 10),
0, 0);
layout.setConstraints(message, contraintes);
contraintes.gridy++;
layout.setConstraints(barre, contraintes);
setLayout(layout);
add(message);
add(barre);
setSize(fond.getIconHeight(), fond.getIconWidth());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
try
{
BufferedImage image = ImageIO.read(new File("images/fond.jpg"));
g.drawImage(image, 0, 0, null);
}
catch (IOException e)
{
e.printStackTrace();
}
}
//Passage a l'etape suivante
public void stepIt()
{
barre.setValue((barre.getValue())+1);
}
//Changement de message
public void setMessage(String nouveau)
{
message.setText(nouveau);
}
}
} |