redessiner les fenetres [Swing] - Java - Programmation
MarshPosté le 09-06-2007 à 17:13:43
Bonjour à tous, Voici mon problème:
Je veux faire une JFrame dans laquelle il y a: _une JList de chaines de caractères _un bouton
lorsque l'on clique sur le bouton, je veux ajouter des chaines de caractères à la liste toutes les 2 secondes. Seulement, la JFrame ne daigne se redessiner que lorsque le bouton a fini l' ActionPerformed associée. donc j'ai mis la JList dans un jpanel, le bouton dans un autre jpanel et les deux JPanel dans la Jframe.
Lorsque je clique sur le bouton, je voudrais que seul le JPanel contenant la JListe se redessine, mais je n'arrive pas à le faire: voici mon code pour l'instant:
Marsh Posté le 09-06-2007 à 17:13:43
Bonjour à tous,
Voici mon problème:
Je veux faire une JFrame dans laquelle il y a:
_une JList de chaines de caractères
_un bouton
lorsque l'on clique sur le bouton, je veux ajouter des chaines de caractères à la liste toutes les 2 secondes.
Seulement, la JFrame ne daigne se redessiner que lorsque le bouton a fini l' ActionPerformed associée.
donc j'ai mis la JList dans un jpanel, le bouton dans un autre jpanel et les deux JPanel dans la Jframe.
Lorsque je clique sur le bouton, je voudrais que seul le JPanel contenant la JListe se redessine, mais je n'arrive pas à le faire:
voici mon code pour l'instant:
package defaut;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import java.awt.*;
public class Principale {
public static void ralentir(long s) {
try {
Thread.sleep(s * 1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String args[]){
JFrame jframe=new JFrame("probleme avec la JList" );
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setSize(300,200);
JPanel panelListe=new JPanel();
JPanel panelBouton=new JPanel();
//construction de la JList
Vector vector=new Vector();
vector.add("lala" );
vector.add("lala2" );
vector.add("lala3" );
JList liste=new JList(vector);
panelListe.add(liste);
JButton bouton=new JButton("ajouter" );
//le listener du bouton
class BoutonListener implements ActionListener{
private JPanel panel;
private JList liste;
private Vector vector;
private JFrame jframe;
public BoutonListener(JPanel panel,JList liste,Vector vector,JFrame jframe){
this.panel=panel;
this.liste=liste;
this.vector=vector;
this.jframe=jframe;
}
public void actionPerformed(ActionEvent arg0) {
vector.add("lala4" );
liste=new JList(vector);
panel.removeAll();
panel.add(liste);
jframe.show();;
ralentir(2);
vector.add("lala5" );
liste=new JList(vector);
panel.removeAll();
panel.add(liste);
jframe.show();
}
}
bouton.addActionListener(new BoutonListener(panelListe,liste,vector,jframe));
panelListe.add(liste);
panelBouton.add(bouton);
GridBagLayout gestionnaire=new GridBagLayout();
GridBagConstraints contraintes=new GridBagConstraints();
jframe.setLayout(gestionnaire);
contraintes.gridx=0;
gestionnaire.setConstraints(panelBouton,contraintes);
jframe.add(panelBouton);
contraintes.gridx=1;
gestionnaire.setConstraints(panelListe,contraintes);
jframe.add(panelListe);
jframe.show();
}
}
quelqu'un peut il me dire comment je fais pour ne redessiner que le panelListe?