Caros,
Tenho uma aplicação que após um determinado evento chama uma JWindow. Essa Jwindow deveria ficar aberta por 4 segundos e fechar e seguida. Para isso utilizei a classe javax.swing.Timer, e após os 4 segundos eu chamo o método dispose() referenciando a minha JWindow. Porém, a mesma não fecha (só é possível fecha-la finalizando toda aplicação). Peço, por gentileza a ajuda de vcs. Abaixo, os trechos dos códigos em questão:
Classe que chama a JWindow (popup()):
if(cont == 0){
String DATA = "SELECT getDate() as data";
resultado = MeuState.executeQuery(DATA);
resultado.next();
Time hora = resultado.getTime("data");
String SQL1 = "INSERT INTO TESTE_TB002_LANCAMENTO(fk_tb001_usuario, data, tipo, origem, data_atualizacao, nivel) values('"+id+"',getDate(),"+0+","+0+",getDate(),'"+nivel+"')";
MeuState.executeUpdate(SQL1);
//Abrir JWindow confirmando a operação e mostrando os ultimos registros do dia do funcionário em questão
final popup pop = new popup();
Timer timer = new Timer(4 * 1000, new ActionListener(){
public void actionPerformed(ActionEvent ev) {
pop.dispose();
pop.setVisible(false);
pop.removeAll();
System.out.println("dispose");
}
});
timer.setRepeats(false);
timer.start();
pop.show();
timer.stop();
}
Classe popup()
public class popup extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
private Connection dbConnection;
JLabel titulo, data, nome;
JTextField horario1,horario2,horario3,horario4;
public popup(){
final JWindow window = new JWindow();
horario1 = new JTextField();
horario1.setBounds(80, 120, 100, 20);
horario2 = new JTextField();
horario2.setBounds(80, 135, 100, 20);
horario3 = new JTextField();
horario3.setBounds(80, 150, 100, 20);
horario4 = new JTextField();
horario4.setBounds(880, 100, 100, 20);
ResultSet resultado;
Statement MeuState ;
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
dbConnection = DriverManager.getConnection( "jdbc:jtds:sqlserver://localhost:1433;DatabaseName=PONTO", "Rafa", "jones1");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e){
e.printStackTrace();
}
try {
MeuState = dbConnection.createStatement();
String SQL1 = "Select * from teste_tb001_usuario where pk_tb001_usuario = '7'";
resultado = MeuState.executeQuery(SQL1);
resultado.next();
String nome_func = resultado.getString("nome");
// Faz um select full na tabela de funcionários
String SQL = "Select top 4 * from TESTE_TB002_LANCAMENTO where fk_tb001_usuario = 7 and data >= 30/02/2009";
resultado = MeuState.executeQuery(SQL);
int linha = 0;
while (resultado.next()){
linha = linha + 1;
Time horario = resultado.getTime("data");
if(linha == 1){
horario1.setText(horario.toString());
}
if(linha == 2){
horario2.setText(horario.toString());
}
if(linha == 3){
horario3.setText(horario.toString());
}
if(linha == 4){
horario4.setText(horario.toString());
}
}
// Adiciona componentes na janela
titulo = new JLabel("Registros de Hoje");
titulo.setBounds(20, 30, 200, 25);
nome = new JLabel(nome_func);
nome.setBounds(50, 50, 200, 25);
data = new JLabel("Data: 11/02/2009");
data.setBounds(50, 60, 200, 25);
getContentPane().setLayout(null);
window.getContentPane().add(titulo);
window.getContentPane().add(nome);
window.getContentPane().add(data);
window.getContentPane().add(horario1);
window.getContentPane().add(horario2);
window.getContentPane().add(horario3);
window.getContentPane().add(horario4);
// Set initial size
window.setSize(400, 200);
window.setVisible(true);
}
catch (SQLException e){
e.printStackTrace();
}
}
}
Desde já, agradeço!