Bonjour!!
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.
aidez moi svp c'est très important pour moi!!!
Voivi le code que j'utilise:
package mon_package;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.Dimension;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import java.util.Timer;
import java.util.TimerTask;
public class test1 {
public static void main(String[] args) {
Timer minuteur = new Timer();
/*******************************************************************************/
// Charger le pilote Oracle
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
}
catch (SQLException ex) {
}
/*******************************************************************************/
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) {
}
}
};
minuteur.schedule(tache, 0, 1000);
}
}
Partager