Galera, boa tarde, eu tô querendo capturar o ID da linha da JTable que eu cliquei, porém eu fiz a seguinte função e não surtiu nenhum efeito:
private void tabelaMouseClicked(java.awt.event.MouseEvent evt) {
int indiceLinha = tabela.getSelectedRow();
int id = Integer.parseInt((String) tabela.getValueAt(indiceLinha, 0));
JOptionPane.showMessageDialog(null, id);
}
Criação da JTable:
private JTable tabela;
private DefaultTableModel modelo = new DefaultTableModel();
private void criaJTable() throws SQLException {
tabela = new JTable(modelo);
modelo.addColumn("Código da venda");
modelo.addColumn("Código do cliente");
modelo.addColumn("Matrícula do funcionário:");
modelo.addColumn("Valor total");
modelo.addColumn("Pagamento");
modelo.addColumn("Parcelas");
modelo.addColumn("Data");
tabela.getColumnModel().getColumn(0).setPreferredWidth(40);
tabela.getColumnModel().getColumn(1).setPreferredWidth(40);
tabela.getColumnModel().getColumn(2).setPreferredWidth(40);
tabela.getColumnModel().getColumn(3).setPreferredWidth(120);
tabela.getColumnModel().getColumn(4).setPreferredWidth(40);
tabela.getColumnModel().getColumn(5).setPreferredWidth(20);
tabela.getColumnModel().getColumn(6).setPreferredWidth(120);
pesquisarNomes("SELECT * FROM vender");
}
private void pesquisarNomes(String sql) throws SQLException {
modelo.setNumRows(0);
Connection con = Conectadb.getConnection();
PreparedStatement preparedStatement = null;
preparedStatement = con.prepareStatement(sql);
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
modelo.addRow(new String [] {rs.getString("CodigoVenda"),rs.getString("CodigoCliente"),rs.getString("MatriculaFuncionario"),"R$"+String.format("%,.2f", rs.getFloat("ValorTotal")),rs.getString("Pagamento"),rs.getString("Parcelas"),rs.getString("DataRealizacao")});
}
}
Como n surtiu efeito?
nada acontece feijoada? rsrs
Não kkkkkk, a MessageDialog não apareceu.
Com JTable o ideal é sempre manter a Orientação a Objetos evitando usar DefaultTableModel e implementando seu próprio tableModel. Com ele poderá usar objetos na tabela e n precisará ficar usando-a como uma matriz horrível.
Realmente estranho. Se vc tem o evento tabelaMouseClicked atribuido a tabela, deve chamar. Não está dando erro?
Tá executando numa boa, porém quando eu clico não dá nada.
Posta todo código da tela se possível, pra ver onde que tabelaMouseClicked está atribuido à tabela.
Era pra ser o código completo.
Mas ali já é possível visualizar um alerta sobre este método que provavelmente diz: “Este método não está sendo utilizado”.
Se vc criou todo o método a mão, não vai surtir efeito mesmo. Vc precisa de um EVENTO da tabela que o chame. Vá na parte de eventos e implemente o mouseClicked
Como? kk
Não tem o componente JTable…
Selecione a jTable -> propriedades -> eventos
mas onde eu seleciono a JTable?
ela não aparece nos componentes
tabela.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabelaMouseClicked(evt);
}
});
Aí no caso eu vou jogar isso aqui?
Em qualquer lugar depois d ter criado a tabela, onde a var tabela tenha uma instancia.
Obs.: código com fundo em cinza n é editável.
*Respeitando a sintaxe.
Vc n pode largar um código fora de um método.
Ficaria assim?
private void tabelaMouseClicked(java.awt.event.MouseEvent e) {
tabela.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabelaMouseClicked(evt);
int indiceLinha = tabela.getSelectedRow();
int id = Integer.parseInt((String) tabela.getValueAt(indiceLinha, 0));
JOptionPane.showMessageDialog(null, id);
}
});
}
Yan_David:
Ficaria assim?
private void tabelaMouseClicked(java.awt.event.MouseEvent e) {
tabela.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tabelaMouseClicked(evt);
int indiceLinha = tabela.getSelectedRow();
int id = Integer.parseInt((String) tabela.getValueAt(indiceLinha, 0));
JOptionPane.showMessageDialog(null, id);
}
});
}
Não.
private void criaJTable() throws SQLException {
// aqui criou a tabela
tabela = new JTable(modelo);
// então depois que criou, pode adicionar um listener para tratar algum evento
tabela.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
// código a ser executado quando clicou no componente
}
});
// restante do código do método criaJTable()...
}
Não cara, vc tá precisando estudar lógica.
private void criaJTable() throws SQLException {
tabela = new JTable(modelo);
modelo.addColumn("Código da venda");
modelo.addColumn("Código do cliente");
modelo.addColumn("Matrícula do funcionário:");
modelo.addColumn("Valor total");
modelo.addColumn("Pagamento");
modelo.addColumn("Parcelas");
modelo.addColumn("Data");
tabela.getColumnModel().getColumn(0).setPreferredWidth(40);
tabela.getColumnModel().getColumn(1).setPreferredWidth(40);
tabela.getColumnModel().getColumn(2).setPreferredWidth(40);
tabela.getColumnModel().getColumn(3).setPreferredWidth(120);
tabela.getColumnModel().getColumn(4).setPreferredWidth(40);
tabela.getColumnModel().getColumn(5).setPreferredWidth(20);
tabela.getColumnModel().getColumn(6).setPreferredWidth(120);
pesquisarNomes("SELECT * FROM vender");
tabela.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
// código a ser executado quando clicou no componente
}
});
}
Substitui seu código por esse. Se n souber onde ou como eu to fora. se esforça ai.