Em minha aplicação faço uma consulta por palavra chave no banco de dados, mas não esta funcionando direito, pois após a primeira consulta, ao fazer outra o scrollpane não funciona, alguém poderia me dar algumas dicas o código é o seguinte:
import java.awt.<em>;
import java.awt.event.</em>;
import java.sql.<em>;
import javax.swing.</em>;
import javax.swing.border.<em>;
import java.util.</em>;
public class PropPesquisar3 extends JFrame{
private Connection con;
private JTable tabela;
private JPanel painel1,painel2,painel3;
private Container janela;
private JLabel l1,l2;
private JTextField c1,c2;
private JButton b1,b2;
public PropPesquisar3(){
super("Proposta - Pesquisa por Palavra Chave");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
l1=new JLabel("DIGITE A PALAVRA CHAVE:");
c1=new JTextField("",10);
b1=new JButton("BUSCAR");
b1.addActionListener(new BtnBuscar());
l2=new JLabel("NÚMERO DA PROPOSTA:");
c2=new JTextField("",10);
b2=new JButton("SELECIONAR");
painel1=new JPanel();
painel2=new JPanel();
painel3=new JPanel();
Border borda=BorderFactory.createEtchedBorder();
Border borda2=BorderFactory.createRaisedBevelBorder();
painel1.setBorder(borda2);
painel2.setBorder(borda);
painel3.setBorder(borda2);
painel1.add(l1);
painel1.add(c1);
painel1.add(b1);
painel3.add(l2);
painel3.add(c2);
painel3.add(b2);
janela=getContentPane();
janela.add(painel1,BorderLayout.NORTH);
janela.add(painel2,BorderLayout.CENTER);
janela.add(painel3,BorderLayout.SOUTH);
setSize(550,350);
setResizable(false);
}
public class BtnBuscar implements ActionListener{
public void actionPerformed(ActionEvent e){
String url = "jdbc:odbc:BDProposta";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception exe){
System.out.println("Falha na Conexão");
}
buscaTabela();
}
private void buscaTabela(){
String palavra=c1.getText();
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("select Número,Assunto from Proposta where assunto like'%"+String.valueOf(palavra)+"%'");
if(c1.equals("")){
JOptionPane.showMessageDialog(null,
"Digite a palavra chave!",
"Aviso",
JOptionPane.INFORMATION_MESSAGE);
}else{
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= 2; ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do
{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
tabela.getColumnModel().getColumn(0).setPreferredWidth(150);
tabela.getColumnModel().getColumn(1).setPreferredWidth(1000);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
//tabela.setEditable(false);
st.close();
con.close();
}
}
catch (SQLException sqlex) {
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= 2; ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.LONGVARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}
}
