Oi povo do GUJ!!!!.
Fiz uma aplicação que está puxando consultas de um BD via JTable.
Agora no panel em que está a tabela, coloquei dois botões: "alterar" e "excluir".
Eu preciso que quando o usuário clicar com mouse em uma linha da JTable selecionando-a e depois clicar em excluir, seja deletada a linha do JTable e o registro do BD correspondente.
Como eu faço isso ?
Coloco aqui meu código:
package Teste;
import java.sql.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
/**
* This code was generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* *************************************
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED
* for this machine, so Jigloo or this code cannot be used legally
* for any corporate or commercial purpose.
* *************************************
*/
public class TableDisplay extends JPanel {
private Connection connection;
private JTable table;
private JButton jButton2;
private JButton jButton1;
public TableDisplay() {
super();
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection = DriverManager.getConnection("jdbc:odbc:BancodeDados", "", "");
}
catch (ClassNotFoundException cnfex) {
System.err.println(
"Falhou a conexao com o banco");
cnfex.printStackTrace();
System.exit(1);
}
catch (SQLException sqlex) {
System.err.println("Conexao desabilitada");
sqlex.printStackTrace();
}
getTable();
this.setSize(450, 370);
setLocation(5,20);
this.setPreferredSize(new java.awt.Dimension(450, 414));
show();
}
private void getTable()
{
Statement statement;
ResultSet resultset;
try {
String query = "Select idobra,nome,localdearmazenamento from obra";
statement = connection.createStatement();
resultset = statement.executeQuery(query);
displayResultSet(resultset);
statement.close();
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}
private void displayResultSet(ResultSet rs )
throws SQLException
{
boolean moreRecords = rs.next();
if (! moreRecords) {
JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!");
//setTitle();
return;
}
// setTitle("Listagem Geral dos dados - Tabela Student - bancoDB");
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
columnHeads.addElement(rsmd.getColumnName(i));
do {
rows.addElement(getNextRow(rs, rsmd));
} while (rs.next());
table = new JTable(rows, columnHeads);
JScrollPane scroller = new JScrollPane(table);
add(scroller,BorderLayout.CENTER);
scroller.setPreferredSize(new java.awt.Dimension(446, 234));
{
jButton1 = new JButton();
this.add(jButton1);
jButton1.setText("alterar");
}
{
jButton2 = new JButton();
this.add(jButton2);
jButton2.setText("excluir");
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
table.clearSelection() ;
System.out.println("jButton2.actionPerformed, event=" + evt);
//TODO add your code for jButton2.actionPerformed
}
});
}
validate();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd)
throws SQLException
{
Vector currentRow = new Vector();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)) {
case Types.VARCHAR: currentRow.addElement(rs.getString(i));
break;
case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i)));
break;
/*case Types.LONGCHAR:currentRow.addElement(rs.getString(i));
break;*/
default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i));
}
return currentRow;
}
public void shutDown()
{
try {
connection.close();
}
catch (SQLException sqlex) {
System.err.println("N? foi poss?el desconectar.");
sqlex.printStackTrace();
}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new TableDisplay());
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.show();
}
/**
* Auto-generated method for setting the popup menu for a component
*/
private void setComponentPopupMenu(final java.awt.Component parent, final javax.swing.JPopupMenu menu) {
parent.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
if(e.isPopupTrigger())
menu.show(parent, e.getX(), e.getY());
}
public void mouseReleased(java.awt.event.MouseEvent e) {
if(e.isPopupTrigger())
menu.show(parent, e.getX(), e.getY());
}
});
}
}