Olá, bom dia.
gostaria que você olhasse esse código pra mim e mim ajudasse, quando eu chamo o método chamado() pela primeira vez, o evento de clique do mouse funciona perfeitamente, mais quando chamo pela segunda vez (dentro da Thread) o evento do clique do mouse já não funciona mais. Gostaria de saber como resolver isso, se ao invés de zerar o modelo da tabela, tem como destruir ou resetar todo o modelo da tabela e a tabela.
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.text.SimpleDateFormat;
public class Principal extends JFrame implements Runnable {
private JMenuBar menu;
private JMenu arquivo;
private JMenuItem mCadastroUsuario, mStatus, mAlteraSenha, mSair;
private JMenu listar;
private JMenuItem mChamado;
private JLabel lblTitulo;
private DefaultTableModel dmChamado;
private JTable tblChamado;
private JScrollPane scrChamado;
private JLabel lblObs;
private Connection con;
public Statement stm;
public ResultSet rs;
public String usuario;
public Principal(String user) {
usuario = user;
this.getContentPane().setLayout(null);
this.getContentPane().setBackground(new Color(0, 130, 180));
this.setSize(850, 600);
this.setLocationRelativeTo(null);
this.setTitle("Menu Principal - E-SAC");
menu = new JMenuBar();
this.setJMenuBar(menu);
arquivo = new JMenu("Arquivo");
arquivo.setMnemonic(KeyEvent.VK_A);
menu.add(arquivo);
if (Integer.parseInt(usuario) == 1) {
mCadastroUsuario = new JMenuItem("Cadastrar Usuário");
mCadastroUsuario.setMnemonic(KeyEvent.VK_C);
arquivo.add(mCadastroUsuario);
mCadastroUsuario.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
Usuario u = new Usuario();
u.setVisible(true);
}
});
mStatus = new JMenuItem("Status Usuário");
mStatus.setMnemonic(KeyEvent.VK_T);
arquivo.add(mStatus);
mStatus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
Status s = new Status();
s.setVisible(true);
}
});
}
mAlteraSenha = new JMenuItem("Alterar Senha");
mAlteraSenha.setMnemonic(KeyEvent.VK_A);
arquivo.add(mAlteraSenha);
mAlteraSenha.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
Senha s = new Senha(usuario);
s.setVisible(true);
}
});
arquivo.addSeparator();
mSair = new JMenuItem("Sair");
mSair.setMnemonic(KeyEvent.VK_S);
arquivo.add(mSair);
mSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.exit(0);
}
});
listar = new JMenu("Listar");
listar.setMnemonic(KeyEvent.VK_L);
menu.add(listar);
mChamado = new JMenuItem("Chamados");
mChamado.setMnemonic(KeyEvent.VK_C);
listar.add(mChamado);
mChamado.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
Listar l = new Listar();
l.setVisible(true);
}
});
if (Integer.parseInt(usuario) != 1) {
lblTitulo=new JLabel("CHAMADOS");
lblTitulo.setBounds(new Rectangle(250, 40, 350, 40));
lblTitulo.setFont(new Font("Times New Roman", Font.BOLD, 52));
lblTitulo.setForeground(new Color(236, 240, 233));
this.getContentPane().add(lblTitulo);
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/chamados", "sistemas", "doctum");
stm = con.createStatement();
} catch (Exception e) {
}
chamados();
lblObs=new JLabel("(Clique na coluna para Expandir)");
lblObs.setBounds(new Rectangle(310, 500, 350, 40));
lblObs.setFont(new Font("Times New Roman", Font.BOLD, 14));
lblObs.setForeground(new Color(236, 240, 233));
this.getContentPane().add(lblObs);
}
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void run() {
while (1 != 0) {
try {
Thread.sleep(3000);
// Zerando o modelo da tabela
dmChamado.setNumRows(0);
chamados();
} catch (Exception e) {
}
}
}
public void chamados() {
try {
rs = stm.executeQuery("select m.data,p.protocolo,c.nome,p.tipo,p.motivo from chamado p,cliente c,mensagem m where c.codigo=p.cliente and p.protocolo=m.protocolo and p.status='Aberto' and p.usuario="+usuario+" group by p.protocolo");
rs.last();
int linha = rs.getRow();
rs.beforeFirst();
String[] coluna = {"DATA", "PROTOCOLO", "NOME", "TIPO", "MOTIVO"};
String[][] dados = new String[linha][5];
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
linha = 0;
while (rs.next()) {
dados[linha][0] = formato.format(rs.getDate(1));
dados[linha][1] = rs.getString(2);
dados[linha][2] = rs.getString(3);
dados[linha][3] = rs.getString(4);
dados[linha][4] = rs.getString(5);
linha++;
}
dmChamado = new DefaultTableModel(dados, coluna);
tblChamado = new JTable(dmChamado);
tblChamado.getColumnModel().getColumn(0).setMaxWidth(80);
tblChamado.getColumnModel().getColumn(1).setMaxWidth(90);
tblChamado.getColumnModel().getColumn(2).setMaxWidth(220);
tblChamado.getColumnModel().getColumn(3).setMaxWidth(80);
tblChamado.getColumnModel().getColumn(4).setMaxWidth(330);
tblChamado.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1) {
Point p = e.getPoint();
Chamado c = new Chamado(tblChamado.getValueAt(tblChamado.rowAtPoint(p), 1));
c.setVisible(true);
setVisible(false);
}
}
});
scrChamado = new JScrollPane(tblChamado);
scrChamado.setBounds(new Rectangle(20, 100, 800, 400));
this.getContentPane().add(scrChamado, null);
} catch (Exception e) {
}
}
}