Hello World amigos, estou trabalhando com java e tantando ter o retorno de um JTable que esta funcionando corretamente, porem nao tenho a minima ideia de como fazer ele enviar na hora que eu seleciono e linha ele abrir e preencher o meu formulario CadastroCyberCrime.java vejam como esta minha classe JTable que preenche corretamente.
/*
* ResultsetTable.java
*
* Created on 19 de Novembro de 2007, 08:14
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package listagems;
/**
*
* @author kleber
*/
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class ResultsetTable {
public static void main(String[] args) {
JFrame frame = new ResultSetFrame();
frame.show();
}
}
/* this class is the base class for the scrolling and the
caching result set table model. It stores the result set
and its metadata.
*/
abstract class ResultSetTableModel extends AbstractTableModel {
public ResultSetTableModel(ResultSet aResultSet) {
rs = aResultSet;
try {
rsmd = rs.getMetaData();
} catch(SQLException e) {
System.out.println("Error " + e);
}
}
public String getColumnName(int c) {
try {
return rsmd.getColumnName(c + 1);
} catch(SQLException e) {
System.out.println("Error " + e);
return "";
}
}
public int getColumnCount() {
try {
return rsmd.getColumnCount();
} catch(SQLException e) {
System.out.println("Error " + e);
return 0;
}
}
protected ResultSet getResultSet() {
return rs;
}
private ResultSet rs;
private ResultSetMetaData rsmd;
}
/* this class uses a scrolling cursor, a JDBC 2 feature
*/
class ScrollingResultSetTableModel extends ResultSetTableModel {
public ScrollingResultSetTableModel(ResultSet aResultSet) {
super(aResultSet);
}
public Object getValueAt(int r, int c) {
try {
ResultSet rs = getResultSet();
rs.absolute(r + 1);
return rs.getObject(c + 1);
} catch(SQLException e) {
System.out.println("Error " + e);
return null;
}
}
public int getRowCount() {
try {
ResultSet rs = getResultSet();
rs.last();
return rs.getRow();
} catch(SQLException e) {
System.out.println("Error " + e);
return 0;
}
}
}
/* this class caches the result set data; it can be used
if scrolling cursors are not supported
*/
class CachingResultSetTableModel extends ResultSetTableModel {
public CachingResultSetTableModel(ResultSet aResultSet) {
super(aResultSet);
try {
cache = new ArrayList();
int cols = getColumnCount();
ResultSet rs = getResultSet();
/* place all data in an array list of Object[] arrays
We don't use an Object[][] because we don't know
how many rows are in the result set
*/
while (rs.next()) {
Object[] row = new Object[cols];
for (int j = 0; j < row.length; j++)
row[j] = rs.getObject(j + 1);
cache.add(row);
}
} catch(SQLException e) {
System.out.println("Error " + e);
}
}
public Object getValueAt(int r, int c) {
if (r < cache.size())
return ((Object[])cache.get(r))[c];
else
return null;
}
public int getRowCount() {
return cache.size();
}
private ArrayList cache;
}
class ResultSetFrame extends JFrame
implements ActionListener {
public ResultSetFrame() {
setTitle("Resultado da Pesquisa");
setBounds(200,200,600,80);
setResizable(false);
//setExtendedState(this.MAXIMIZED_BOTH);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
} );
/* find all tables in the database and add them to
a combo box
*/
Container contentPane = getContentPane();
tableNames = new JComboBox();
jlCodigoDe = new JLabel("Buscar código de:", SwingConstants.RIGHT);
jlCodigoAte = new JLabel("Ate:", SwingConstants.RIGHT);
jbBuscar = new JButton();
jtfNome = new JTextField();
jtfCodigoDe = new JTextField();
jtfCodigoAte = new JTextField();
jtfCodigoAte.setSize(20,10);
jtfCodigoDe.addActionListener(this);
jtfCodigoAte.addActionListener(this);
jtfNome.addActionListener(this);
jbBuscar.addActionListener(this);
tableNames.addActionListener(this);
JPanel p = new JPanel();
//p.add(tableNames);
jlCodigoDe.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
jlCodigoAte.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
//Adicionando um parametro para minha busca
jtfNome.setText("Digite o parametro para a Busca");
jtfCodigoDe.setText("0000");
jtfCodigoAte.setText("9999");
jbBuscar.setText("Buscar");
//Adicionando o Label de minha aplicacao
p.add(jlCodigoDe);
p.add(jtfCodigoDe);
p.add(jlCodigoAte);
p.add(jtfCodigoAte);
//p.add(jtfNome);
contentPane.add(p, "North");
p.add(jbBuscar);
try {
Class.forName("com.mysql.jdbc.Driver");
// force loading of driver
String url = "jdbc:mysql://localhost:3306/spherecrims";
String user = "root";
String password = "";
con = DriverManager.getConnection(url, user,
password);
if (SCROLLABLE)
stmt = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
else
stmt = con.createStatement();
DatabaseMetaData md = con.getMetaData();
ResultSet mrs = md.getTables(null, null, null,
new String[] { "TABLE" });
while (mrs.next())
tableNames.addItem(mrs.getString(3));
mrs.close();
} catch(ClassNotFoundException e) {
System.out.println("Error " + e);
} catch(SQLException e) {
System.out.println("Error " + e);
}
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == jbBuscar) {
setBounds(200,200,600,(20*tableNames.getMaximumRowCount())+80);
// jtfCodigoDe.setSize(180,20);
if (scrollPane != null)
getContentPane().remove(scrollPane);
try {
String tableName
= (String)tableNames.getSelectedItem();
if (rs != null) rs.close();
// String query = "SELECT concat(chave, '-', codigo) AS Chave, nome AS Nome FROM tb_cadastrarcriminosos where codigo";
String query = "SELECT concat(chave, '-', codigo) AS Chave, nome AS Nome FROM tb_cadastrarcriminosos where codigo between " +jtfCodigoDe.getText()+" and " + jtfCodigoAte.getText();
// String query = "SELECT * FROM " + tableName; NESTE TRECHO AQUI EU PEGAVA E SELECIONAVA AS TABELA POR UM CHECK BOX
// String query = "SELECT * FROM " + tableName;
rs = stmt.executeQuery(query);
if (SCROLLABLE)
model = new ScrollingResultSetTableModel(rs);
else
model = new CachingResultSetTableModel(rs);
JTable table = new JTable(model);
scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, "Center");
pack();
doLayout();
jtfCodigoAte.setSize(50,20);
} catch(SQLException e) {
System.out.println("Error " + e);
}
}
if (evt.getSource() == tableNames) { // show the selected table from the combo box
/*
jtfNome.setSize(180,20);
if (scrollPane != null)
getContentPane().remove(scrollPane);
try {
String tableName
= (String)tableNames.getSelectedItem();
if (rs != null) rs.close();
String query = "SELECT concat(chave, '-', codigo) AS Chave, nome AS Nome FROM tb_cadastrarcriminosos where codigo";
// String query = "SELECT concat(chave, '-', codigo) AS Chave, nome AS Nome FROM tb_cadastrarcriminosos where codigo = " +jtfNome.getText()+"";
// String query = "SELECT * FROM " + tableName; NESTE TRECHO AQUI EU PEGAVA E SELECIONAVA AS TABELA POR UM CHECK BOX
// String query = "SELECT * FROM " + tableName;
rs = stmt.executeQuery(query);
if (SCROLLABLE)
model = new ScrollingResultSetTableModel(rs);
else
model = new CachingResultSetTableModel(rs);
JTable table = new JTable(model);
scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, "Center");
pack();
doLayout();
} catch(SQLException e) {
System.out.println("Error " + e);
}
*/
}
}
private JScrollPane scrollPane;
private ResultSetTableModel model;
private JComboBox tableNames;
private JButton nextButton;
private JButton previousButton;
private ResultSet rs;
private Connection con;
private Statement stmt;
public JButton jbBuscar;
public JTextField jtfNome;
public JTextField jtfCodigoDe;
public JTextField jtfCodigoAte;
public JLabel jlCodigoDe;
public JLabel jlCodigoAte;
private static boolean SCROLLABLE = false;
// set to true if your database supports scrolling cursors
}
Ela esta funcionando corretamente, porem nao sei como fazer na hora que o individuo clicar ele ir para um formulario e receber estes dados, Grato estou no aguardo.