Pessoal,
Estou rodando uma query infintamente dessa forma:
public void run() {
try {
while(true)
{
executeQuery();
Thread.sleep(1000);
}
} catch (InterruptedException ex) {
JDBCConnection.closeResources();
}
}
E nesse metodo executeQuery eu estou criando um defaultTableModel dessa forma:
public void executeTasksQuery(){
DefaultTableModel model = new DefaultTableModel(new Object[][]{},
new Object[]{"Task ID","Name","Fault Times",
"Process ID","OS PID","Last Start Date","Last Stop Date","Task State",
,"Command"});
try {
PreparedStatement statement = null;
ResultSet resultSet = null;
statement = this.connection.prepareStatement(query);
resultSet = statement.executeQuery();
while (resultSet.next()) {
String task_id = Integer.toString(resultSet.getInt("id"));
String taskName = resultSet.getString("name");
String faultTimes = Integer.toString(resultSet.getInt("faulttimes"));
String processID = Integer.toString(resultSet.getInt("process_id"));
String osPid = Integer.toString(resultSet.getInt("ospid"));
String lastStartDate = resultSet.getString("laststartdate");
String lastStopDate = resultSet.getString("laststopdate");
String taskState = resultSet.getString("state");
String command = resultSet.getString("command");
String[] queryResult = new String[]{task_id,taskName,faultTimes,
processID,osPid,lastStartDate,lastStopDate,taskState,
command};
model.addRow(queryResult);
}
resultSet.close();
statement.close();
} catch (SQLException ex) {
JDBCConnection.closeResources();
}
}
Esse model eu irei usar pra criar um Jtable desse jeito
this.tableTasks.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.tableTasks.setModel(model);
Porem, eu preciso dar refresh na table a medida que o resultSet é alterado
Teria alguma maneira de eu comparar o TableModel das queries e só dar refresh quando tiver mudado alguma linha?
Sei que eu teria q armazenar o tableModel anterior e o atual e comparar eles 2, teria algum metodo pelo qual comparasse isso dinamicamente?
Isso evitaria da tela ficar piscando o tempo todo, como eu estou fazendo hoje. Suponha que a jtable ja esteja inicializada. Isso seria possivel?