Olá gostaria de saber como se carrega uma
JTable
só que os valores estão em banco de dados
a parte de acesso a dados eu sei é só mesmo como carregar esses valores
para uma JTable
desde já Agradeço
Esses códigos q estou te passando foi tirado do livro Java como programar
Essa classe implementa um Modelo de tabela, modifica algumas coisas pra vc discubrir como q funciona.
// Fig. 25.28: ResultSetTableModel.java
// Um TableModel que fornece dados ResultSet a uma JTable.
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
// Linhas e colunas do ResultSet são contadas a partir de 1 e linhas e
// colunas JTable são contadas a partir de 0. Ao processar
// linhas ou colunas de ResultSet para utilização em uma JTable, é
// necessário adicionar 1 ao número de linha ou coluna para manipular
// a coluna apropriada de ResultSet (isto é, coluna 0 de JTable é a
// coluna de ResultSet 1 e a linha de JTable 0 é a linha de ResultSet 1).
public class ResultSetTableModel extends AbstractTableModel
{
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData metaData;
private int numberOfRows;
// monitora o status da conexão de banco de dados
private boolean connectedToDatabase = false;
// construtor inicializa resultSet e obtém seu objeto de metadados;
// determina número de linhas
public ResultSetTableModel( String driver, String url,
String username, String password, String query )
throws SQLException, ClassNotFoundException
{
// carrega classe de driver do banco de dados
Class.forName( driver );
// conecta-se ao banco de dados
connection = DriverManager.getConnection( url, username, password );
// cria Statement para consultar banco de dados
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY );
// atualiza status de conexão de banco de dados
connectedToDatabase = true;
// configura consulta e a executa
setQuery( query );
} // fim do construtor ResultSetTableModel
// obtém a classe que representa o tipo de coluna
public Class getColumnClass( int column )throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina a classe Java de coluna
try
{
String className = metaData.getColumnClassName( column + 1 );
// retorna objeto Class que representa className
return Class.forName( className );
} // fim do try
catch ( Exception exception )
{
exception.printStackTrace();
} // fim do catch
return Object.class; // se ocorrerem os problemas acima, assume tipo Object
} // fim do método getColumnClass
// obtém número de colunas em ResultSet
public int getColumnCount()throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina número de colunas
try
{
return metaData.getColumnCount();
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return 0; // se ocorrerem os problemas acima, retorna 0 para o número de colunas
} // fim do método getColumnCount
// obtém nome de uma coluna particular em ResultSet
public String getColumnName( int column )throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina o nome de coluna
try
{
return metaData.getColumnName( column + 1 );
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return ""; // se ocorrerem problemas, retorna string vazia para nome de coluna
} // fim do método getColumnName
// retorna número de linhas em ResultSet
public int getRowCount()throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
return numberOfRows;
} // fim do método getRowCount
// obtém valor na linha e coluna particular
public Object getValueAt( int row, int column )
throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// obtém um valor na linha e coluna de ResultSet especificada
try
{
resultSet.absolute( row + 1 );
return resultSet.getObject( column + 1 );
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return ""; // se ocorrerem problemas, retorna objeto string vazio
} // fim do método getValueAt
// configura nova string de consulta de banco de dados
public void setQuery( String query )
throws SQLException, IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// especifica consulta e a executa
resultSet = statement.executeQuery( query );
// obtém metadados para ResultSet
metaData = resultSet.getMetaData();
// determina o número de linhas em ResultSet
resultSet.last(); // move para a última linha
numberOfRows = resultSet.getRow(); // obtém número de linha
// notifica a JTable de que modelo foi alterado
fireTableStructureChanged();
} // fim do método setQuery
// fecha Statement e Connection
public void disconnectFromDatabase()
{
if ( !connectedToDatabase )
return;
// fecha Statement e Connection
try
{
statement.close();
connection.close();
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
finally // atualiza status de conexão de banco de dados
{
connectedToDatabase = false;
} // fim do finally
} // fim do método disconnectFromDatabase
} // fim da classe ResultSetTableModel
/**************************************************************************
* (C) Copyright 1992-2005 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/
Esse é um exemplo q usa a classe acima.
Modifique-o para sua aplicação.
/ Fig. 25.31: DisplayQueryResults.java
// Exibe o conteúdo da tabela Authors no
// banco de dados Books.
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.Box;
public class DisplayQueryResults extends JFrame
{
// driver JDBC e URL de banco de dados
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://localhost/books";
static final String USERNAME= "jhtp6";
static final String PASSWORD= "jhtp6";
// consulta padrão seleciona todas as linhas de tabela authors
static final String DEFAULT_QUERY = "SELECT * FROM authors";
private ResultSetTableModel tableModel;
private JTextArea queryArea;
// cria o ResultSetTableModel e GUI
public DisplayQueryResults()
{
super( "Displaying Query Results" );
// cria o ResultSetTableModel e exibe tabela de banco de dados
try
{
// cria o TableModel para resultados da consulta SELECT * FROM authors
tableModel = new ResultSetTableModel( JDBC_DRIVER, DATABASE_URL,
USERNAME, PASSWORD, DEFAULT_QUERY );
// configura JTextArea em que o usuário digita consultas
queryArea = new JTextArea( DEFAULT_QUERY, 3, 100 );
queryArea.setWrapStyleWord( true );
queryArea.setLineWrap( true );
JScrollPane scrollPane = new JScrollPane( queryArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
// configura o JButton para enviar consulta
JButton submitButton = new JButton( "Submit Query" );
// cria o Box para gerenciar o posicionamento da queryArea e do
// submitButton na GUI
Box box = Box.createHorizontalBox();
box.add( scrollPane );
box.add( submitButton );
// cria o delegado JTable para tableModel
JTable resultTable = new JTable( tableModel );
// posiciona os componentes GUI no painel de conteúdo
add( box, BorderLayout.NORTH );
add( new JScrollPane( resultTable ), BorderLayout.CENTER );
// cria evento ouvinte para submitButton
submitButton.addActionListener(
new ActionListener()
{
// passa consulta para modelo de tabela
public void actionPerformed( ActionEvent event )
{
// realiza uma nova consulta
try
{
tableModel.setQuery( queryArea.getText() );
} // fim do try
catch ( SQLException sqlException )
{
JOptionPane.showMessageDialog( null,
sqlException.getMessage(), "Database error",
JOptionPane.ERROR_MESSAGE );
// tenta recuperar a partir da consulta de usuário inválida
// executando consulta padrão
try
{
tableModel.setQuery( DEFAULT_QUERY );
queryArea.setText( DEFAULT_QUERY );
} // fim do try
catch ( SQLException sqlException2 )
{
JOptionPane.showMessageDialog( null,
sqlException2.getMessage(), "Database error",
JOptionPane.ERROR_MESSAGE );
// assegura que a conexão de banco de dados está fechada
tableModel.disconnectFromDatabase();
System.exit( 1 ); // termina o aplicativo
} // fim do catch interno
} // fim do catch externo
} // fim do método actionPerformed
} // fim da classe ActionListener interna
); // fim da chamada para addActionListener
setSize( 500, 250 ); // configura o tamanho da janela
setVisible( true ); // exibe a janela
} // fim do try
catch ( ClassNotFoundException classNotFound )
{
JOptionPane.showMessageDialog( null,
"MySQL driver not found", "Driver not found",
JOptionPane.ERROR_MESSAGE );
System.exit( 1 ); // termina o aplicativo
} // fim do catch
catch ( SQLException sqlException )
{
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database error", JOptionPane.ERROR_MESSAGE );
// assegura que a conexão de banco de dados está fechada
tableModel.disconnectFromDatabase();
System.exit( 1 ); // termina o aplicativo
} // fim do catch
// dispõe da janela quando o usuário fecha o aplicativo (isso sobrescreve
// o padrão de HIDE_ON_CLOSE)
setDefaultCloseOperation( DISPOSE_ON_CLOSE );
// assegura que a conexão de banco de dados é fechada quando usuário fecha o aplicativo
addWindowListener(
new WindowAdapter()
{
// desconecta-se do banco de dados e sai quando a janela for fechada
public void windowClosed( WindowEvent event )
{
tableModel.disconnectFromDatabase();
System.exit( 0 );
} // fim do método windowClosed
} // fim da classe WindowAdapter interna
); // fim da chamada a addWindowListener
} // fim do construtor DisplayQueryResults
// executa o aplicativo
public static void main( String args[] )
{
new DisplayQueryResults();
} // fim de main
} // fim da classe DisplayQueryResults
/**************************************************************************
* (C) Copyright 1992-2005 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/
obrigado!!!
galera tou pecisando duma força 
Tenho os meus dados numa jdbTable, ao clicar numa linha da jdbTable quero que esses dados preencham as jTextField que eu lhes tenho associadas?
Ja fiz o inverso que é com o Insert Into values.
Alguem me pode ajudar. Valeu