Tenho um problema no JTable do meu programa que gerencia um banco de dados em Access, a classe que procura e mostra funciona direitinho, mas na hora de cria a tabela(JTable), não aparece nada, onde estou errando; no meu programa principal: Gerenciador.java crio uma JTable
- table = new JTable( 2, 5);
- c.add( table, BorderLayout.SOUTH );
e depois mando ela para outra classe que cria os botoes:
- botoes = new BotoesPanel( connect, scrollArea, table );
- c.add( botoes, BorderLayout.EAST );
e na classe BotoesPanel, passo para outra classe ProcuraCantor:
-
procura1.addActionListener( new ProcuraCantor( c, s, o) );
Bom beleza ate ai ta tudo certo, o problema é aki, e tipo o programa compila normal e executa normal, mas na hora nao mostra a JTable:
import java.sql.;
import javax.swing.;
import java.awt.;
import java.awt.event.;
import java.util.*;
public class ProcuraCantor extends JFrame implements ActionListener{
private ScrollingPanel campos;
private Connection connection;
private JTable table;
private ResultSet resultSet;
private ResultSetMetaData rsMetaData;
public ProcuraCantor( Connection c, ScrollingPanel f, JTable t )
{
connection = c;
campos = f;
table = t;
}
public void actionPerformed( ActionEvent e )
{
try {
if ( ! campos.autor.getText().equals( "" ) )
{
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String query = "SELECT * FROM musica " +
"WHERE autor LIKE '%"
+ campos.autor.getText() + "%';";
resultSet = statement.executeQuery( query );
displayResultSet( resultSet );
statement.close();
}
else {
JOptionPane.showMessageDialog( null, "Digite", "Erro", JOptionPane.INFORMATION_MESSAGE );
}
}
catch ( SQLException sqlex ) {
JOptionPane.showMessageDialog( null, "Erro1", "Erro", JOptionPane.INFORMATION_MESSAGE );}
}
private void displayResultSet( ResultSet rs )
throws SQLException
{
// position to first record
boolean moreRecords = rs.next();
// If there are no records, display a message
if ( ! moreRecords ) {
JOptionPane.showMessageDialog( null,
"ResultSet contained no records", "Erro", JOptionPane.ERROR_MESSAGE );
return;
}
Vector columnHeads = new Vector();
Vector rows = new Vector();
try {
// get column heads
ResultSetMetaData rsmd = rs.getMetaData();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
columnHeads.addElement( rsmd.getColumnName( i ) );
// get row data
do {
rows.addElement( getNextRow( rs, rsmd ) );
} while ( rs.next() );
// display table with ResultSet contents
table = new JTable( rows, columnHeads );
Container c = getContentPane();
c.add( table, BorderLayout.SOUTH );
c.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:
case Types.LONGVARCHAR:
currentRow.addElement( rs.getString( i ) );
break;
case Types.INTEGER:
currentRow.addElement(
new Long( rs.getLong( i ) ) );
break;
default:
System.out.println( "Type was: " +
rsmd.getColumnTypeName( i ) );
}
return currentRow;
}
}
O programa procura os resultados e mostra, já até testei numa JTextArea e deu certo, mas na hora de mostrar na JTable, naum aparece nada.
Obrigado se me ajudarem!