Je voudrais réactualiser l'affichage d'informations d'une BD dans une jtable qui est affichée dans une fenêtre toute les n secondes, pour cela j'utilise un timer mais le problème est que si je mets tout mon code dans la méthode run() du timer :plusieurs fenêtres s'affichent et sinon (si je ne mets que la requête d'accès à la base de données et l'affichage de la table):certaines variables (panel, jframe...) ne sont plus reconnus.
/*******************************************************************************/
TimerTask tache = new TimerTask() {
public void run() {
System.out.println("coucou !");
// Connexion à la base de données
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:nom_base", "login", "password");
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery ("select * from table");
// Affichage du résultat
Vector values = new Vector();
while(rset.next())
{
Vector tab = new Vector();
tab.add(rset.getString("col1")); //on met le nom exact de la colonne affichée dans la base
//a refaire pour les autres colones
tab.add(rset.getString("col2"));
tab.add(rset.getString("col3"));
values.add(tab);
}
Vector names= new Vector();
names.addElement("titre1");
//a refaire pour plus de colone
names.addElement("titre2");
names.addElement("titre3");
names.addElement("titre4");
DefaultTableModel model = new DefaultTableModel(values, names);
JTable tab1 = new JTable(model);
JPanel pan = new JPanel();
//Définition de la taille du tableau
tab1.setPreferredScrollableViewportSize(new Dimension(1000, 600));
//Ajout d'une scrollBar en cas de dépassement de la dimension
pan.add(new JScrollPane(tab1));
//nouvelle fenêtre
JFrame fen = new JFrame();
//taille de la fenêtre
fen.setSize(500, 500);
//Ajout du JPanel a la JFrame
fen.setContentPane(pan);
}
catch (SQLException ex) {
}
Tu as essayer un déclarant tes variables d'objet graphique à l'extérieur de tout traitement de façon à les rendre accessible dans tout ton code... genre:
ça n'a pas marché en les déclarant en dehors de tout traitement, par contre ça marche en déclarant la fenêtre (final JFrame f = new JFrame("Application");) en dehors de la méthode run main à l'intérieur du main.
Voila et merci pour ton aide!
timer + jframe
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.