pessoal, meu problema é que tenho um jtable num jscrollpane, e quando faco uma consulta pra exibir na tabela até uns 50 registro tudo ocorre bem e todos sao exibidos, mas quando a consulta gera uns 200 registros a barra de rolagem nao vai ate o fim da listagem, parece que pega no maximo 50 registros.
Alguem sabe por que isso acontecce?
ja verifiquei e a barra de rolagem ta marcada pra aumentar AS_NEEDED.
Aguardo resposta…T+
cassio
Julho 18, 2006, 11:44am
#2
Isso quem faz não é o tamanho da barra de rolagem, mas sim a posiçào da mesma…
Dá uma pesquisada no javadoc sobre JTable e o JScrollPane
cara, nao entendi o que vc quis dizer, dei uma olhada no que sugeriu sobre o scrollpane, mas ainda nao entendo porque nao exibe todas os meus registros…
Alguma sugestao???
Você tem certeza que a consulta está gerando todos estes resultados? Porque eu fiz um teste aqui e minha tabela exibe 2500 linhas… olha só:
[code]package teste.guj;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class TesteJTableComVariasLinhas extends JFrame {
private static final long serialVersionUID = 1L;
public TesteJTableComVariasLinhas(int rows) {
super();
setTitle(getClass().toString());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table;
JScrollPane pane;
table = new JTable(getData(rows), getColumns());
pane = new JScrollPane(table);
getContentPane().add(pane);
pack();
}
private Vector getData(int rows) {
Vector data = new Vector();
Vector row;
for (int i = 0; i < rows; i++) {
row = new Vector();
row.add("Linha " + i);
data.add(row);
}
return data;
}
private Vector getColumns() {
Vector columns = new Vector();
columns.add("Linha");
return columns;
}
/**
* @param args
*/
public static void main(String[] args) {
new TesteJTableComVariasLinhas(2500).setVisible(true);
}
}
[/code]
Veja se você não está limitando os resultados para 50 na sua consulta…
seguinte dudaskank, no meu caso eu tenho uma classe usuario que tem os gets e sets:
public class Usuario
{
private Integer cod_manual;
private String nomeusuario;
private String enderecousuario;
private Integer endereconumerousuario;
private String enderecocomplementousuario;
private String bairrousuario;
private String cidadeusuario;
private String telresidencialusuario;
private String telcomercialusuario;
private String celularusuario;
private String profissaousuario;
private String datacadastrousuario;
private String cepusuario;
public Integer getCodManual()
{
return cod_manual;
}
public String getNomeUsuario()
{
return nomeusuario;
}
public String getEnderecoUsuario()
{
return enderecousuario;
}
public Integer getEnderecoNumeroUsuario()
{
return endereconumerousuario;
}
public String getEnderecoComplementoUsuario()
{
return enderecocomplementousuario;
}
public String getBairroUsuario()
{
return bairrousuario;
}
public String getCidadeUsuario()
{
return cidadeusuario;
}
public String getTelResidencialUsuario()
{
return telresidencialusuario;
}
public String getTelComercialUsuario()
{
return telcomercialusuario;
}
public String getCelularUsuario()
{
return celularusuario;
}
public String getProfissaoUsuario()
{
return profissaousuario;
}
public String getDataCadastroUsuario()
{
return datacadastrousuario;
}
public String getCepUsuario()
{
return cepusuario;
}
public void setCodManual(Integer cod_manual)
{
this.cod_manual=cod_manual;
}
public void setNomeUsuario(String nomeusuario)
{
this.nomeusuario=nomeusuario;
}
public void setEnderecoUsuario(String enderecousuario)
{
this.enderecousuario=enderecousuario;
}
public void setEnderecoNumeroUsuario(Integer endereconumerousuario)
{
this.endereconumerousuario=endereconumerousuario;
}
public void setEnderecoComplementoUsuario(String enderecocomplementousuario)
{
this.enderecocomplementousuario=enderecocomplementousuario;
}
public void setBairroUsuario(String bairrousuario)
{
this.bairrousuario=bairrousuario;
}
public void setCidadeUsuario(String cidadeusuario)
{
this.cidadeusuario=cidadeusuario;
}
public void setTelResidencialUsuario(String telresidencialusuario)
{
this.telresidencialusuario=telresidencialusuario;
}
public void setTelComercialUsuario(String telcomercialusuario)
{
this.telcomercialusuario=telcomercialusuario;
}
public void setCelularUsuario(String celularusuario)
{
this.celularusuario=celularusuario;
}
public void setProfissaoUsuario(String profissaousuario)
{
this.profissaousuario=profissaousuario;
}
public void setDataCadastroUsuario(String datacadastrousuario)
{
this.datacadastrousuario=datacadastrousuario;
}
public void setCepUsuario(String cepusuario)
{
this.cepusuario=cepusuario;
}
}
Ai eu tenho um modelo de tabela que implementa abstractTableModel que processa as linhas da tabela com meu resultado:
mport java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class modeloUsuario extends AbstractTableModel
{
private static final long serialVersionUID = 1L;
Vector modelVetorUsuario;
public modeloUsuario(Vector listausuario)
{
modelVetorUsuario=listausuario;
}
public int getRowCount()
{
return modelVetorUsuario.size();
}
public int getColumnCount()
{
return 7;
}
public Object getValueAt(int r,int c)
{
Usuario usuarioatual=(Usuario)modelVetorUsuario.get(r);
if(c==0)
return usuarioatual.getCodManual();
if(c==1)
return usuarioatual.getNomeUsuario();
if(c==2)
return usuarioatual.getEnderecoUsuario();
if(c==3)
return usuarioatual.getEnderecoNumeroUsuario();
if(c==4)
return usuarioatual.getCidadeUsuario();
if(c==5)
return usuarioatual.getTelResidencialUsuario();
if(c==6)
return usuarioatual.getCelularUsuario();
return usuarioatual;
}
}
e depois vem o metodo que faz o select no banco e monta um vetor com os resultados:
public Vector consultaUsuario(String queryparametro) throws IOException,SQLException
{
Connection con=null;
java.util.Vector recebe_consulta=new Vector();// cria vector
try
//A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
{
//Este é um dos meios para registrar um driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:cefa","","");
PreparedStatement stmt = con.prepareStatement(queryparametro);
ResultSet result = stmt.executeQuery();
while (result.next())
{
Usuario consultaparam=new Usuario();//cria um objeto do tipo Usuario
Integer cod_manual = result.getInt(1);
consultaparam.setCodManual(cod_manual);
String nome_usuario = result.getString(2);
consultaparam.setNomeUsuario(nome_usuario);
String endereco_usuario = result.getString(3);
consultaparam.setEnderecoUsuario(endereco_usuario);
Integer numero_usuario=result.getInt(4);
consultaparam.setEnderecoNumeroUsuario(numero_usuario);
/* String complemento_usuario=result.getString(6);
consultaparam.setEnderecoComplementoUsuario(complemento_usuario);
String bairro_usuario=result.getString(7);
consultaparam.setBairroUsuario(bairro_usuario);
*/
String cidade_usuario=result.getString(5);
consultaparam.setCidadeUsuario(cidade_usuario);
String telefone_residencial=result.getString(6);
consultaparam.setTelResidencialUsuario(telefone_residencial);
/*
String telefone_comercial=result.getString(10);
consultaparam.setTelComercialUsuario(telefone_comercial);
*/
String celular_usuario=result.getString(7);
consultaparam.setCelularUsuario(celular_usuario);
/*
String data_cadastro=result.getString(12);
consultaparam.setDataCadastroUsuario(data_cadastro);
String profissao_usuario=result.getString(13);
consultaparam.setProfissaoUsuario(profissao_usuario);
String cep_usuario=result.getString(14);
consultaparam.setCepUsuario(cep_usuario);
*/
//adicionando valores do resultset dentro do vector
recebe_consulta.add(consultaparam);
//System.out.println("o conteudo da vetor de consulta é: "+recebe_consulta);
}
return recebe_consulta;
}
// Registrado o driver, vamos estabelecer uma conexão
catch(Exception e)
{
// se houve algum erro, uma exceção é gerada para informar o erro
e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
}
finally
{
try
{
con.close();
}
catch(Exception onConnClose)
{
System.out.println("Houve erro no fechamento de conexão");
onConnClose.printStackTrace();
}
}
return null;
}
Nao sei onde poderia estar acontecendo a limitacao de linhas. Voce pode me ajudar?
T+
Esta limitação pode estar sendo passada ao banco por aqui: queryparametro
O que está sendo passado como esse valor, não tem por acaso um LIMIT 50 no final? No postgres eu sei que existe este tipo de instrução… em outros bancos não sei exatamente a sintaxe
cara, descobri o problema. Como programo no eclipse, tem aquele componente jTable on JscrollPane. Ai como nao descobri o defeito deletei ele e coloquei na mao um jscrollpane no jframe e depois uma jTable dentro dele, ai tudo funcionou perfeitamente…
que vontade de matar alguem… hehehheeh
T+… valew pela ajuda