Rolar JScrollPane da JTable Automaticamente (RESOLVIDO)  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
RicardoLuis
JavaEvangelist

Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline

Olá a todos, estou desenvolvendo um componente swing chamado LookupComboBox. Ele é um combobox, porém ao invés de uma lista, ele possui uma tabela para apresentar os dados.

Para incromentar o componente, fiz também uma classe que controla o que é digitado quando o componente é editável, assim a medida que o valor é digitado, ele já é buscado na tabela, mas é ai que estou com problemas: se eu efetuo a pesquisa por um valor que não está visível na tela, ele é selecionado sem problemas, porém a barra de rolagem não "rola" até o item.

Como faço para que ocorra tal rolagem?
Alguém possui alguma sugestão?

Desde já agradeço a ajuda de todos.
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Você tem duas alternativas.

1. A JTable implementa Scrollable. Você pode sobrescrever os métodos dessa interface para customizar o comportamento do seu scroll.

2. Você pode usar os comandos:
scrollPane.getVerticalScrollBar().setMaximum(tamanhoDaTabela);
scrollPane.getVerticalScrollBar().setValue(linhaDesejada);
[WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

manow,

abaixo segue o link de um componente, que é uma jcombobox editavel, e que a medida q vc vai digitando ela vai trazendo as ocorrências e ja rola automaticamente, do jeito q vc quer... e o fera é que usa pesquisa binaria, funciona pra ate 10.000 items sem dar 'lag'... ai vc adapta ela pra usar table inves de list...

[url]
http://www.java2s.com/Code/Java/Swing-Components/JComboBoxaddingautomaticcompletionBinayLookup2.htm
[/url]


ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
RicardoLuis
JavaEvangelist

Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline

ViniGodoy wrote:Você tem duas alternativas.

1. A JTable implementa Scrollable. Você pode sobrescrever os métodos dessa interface para customizar o comportamento do seu scroll.

2. Você pode usar os comandos:
scrollPane.getVerticalScrollBar().setMaximum(tamanhoDaTabela);
scrollPane.getVerticalScrollBar().setValue(linhaDesejada);


Você teria algum exemplo de como posso fazer isto implementado Scrollable? Acho que esta solução se encaixaria melhor para mim. Qual dos métodos eu devo implementar para que ocorra a rolagem automática?
RicardoLuis
JavaEvangelist

Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline

Irei explicar melhor o problema, para que mais pessoas possam ajudar: eu digito um valor em um campo e ele pesquisa na minha JTable, selecionando a linha que se encontra o objeto, porém quando a linha selecionada não está visível, a barra de rolagem não rola automaticamente.

Como fazer para que a barra de rolagem "acompanhe" a seleção das linhas da JTable?
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

Olha, eu entendi seu problema pq já tive um parecido,,, mas não sei se te ajuda. Veja bem, no meu caso eu tinha diversos componentes dentro de um panel que estava dentro de um scrollpane,,, e ai o que acontecia é que as vezes eu jogava o foco pra um componente que não estava visível no scroll, então eu tinha que rolar o scroll pra que o componente ficasse visível na tela. Vou colocar o trecho do código de como fiz isso, tomara que ajude:



No meu caso eu uso pra diferentes telas, então eu pego o JScrollPane e o JPanel dentro dele em tempo de execução. Ah, e o objeto que chamdo de "c" é na verdade meu componente, como eu tinha mencionado, o componente que eu quero que fique visível. No meu caso ele era um combo, um textfield, check, etc,,, qq componente que pudesse estar dentro do JPanel.

T+,

[]'s, Renata
[Email]
RicardoLuis
JavaEvangelist

Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline

Alguém possui mais alguma sugestão?
Nenhuma das apresentadas funcionou
RicardoLuis
JavaEvangelist

Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline

Problema solucionado...
Bastou adicionar o ouvinte de eventos de seleção à tabela...

Solução:
ricardo13
Virtual Machine Man
[Avatar]

Membro desde: 14/09/2007 10:19:03
Mensagens: 514
Localização: Mococa/São Carlos
Offline

ola pessoal,

tenho um problema...tenho uma JTable dentro de uma JScrollPane.
Queria saber como faço pra a cada linha inserida a barra de rolagem ir descendo ???

Muito Obrigado

Ricardo

/*
* Sun Certified Java Associate 1.0
* Sun Certified Java Programmer 6
* Sun Certified Web Components Development 5
* Bacharelado em Ciência da Computação - UNICEP
* Mestre em Ciência da Computação - ICMC/USP
*/
[MSN]
ricardo13
Virtual Machine Man
[Avatar]

Membro desde: 14/09/2007 10:19:03
Mensagens: 514
Localização: Mococa/São Carlos
Offline

ola pessoal,

utilizei o jScrollPane1.getVerticalScrollBar().setValue(table.getHeight()); e funcionou, mas esta mostrando até o penúltimo....o último ainda tem q descer com a barra de rolagem.

Alguém sabe oq posso fazer ???

Ricardo

/*
* Sun Certified Java Associate 1.0
* Sun Certified Java Programmer 6
* Sun Certified Web Components Development 5
* Bacharelado em Ciência da Computação - UNICEP
* Mestre em Ciência da Computação - ICMC/USP
*/
[MSN]
MWAdriano
JavaChild

Membro desde: 06/07/2009 13:45:16
Mensagens: 119
Localização: Americana-SP
Offline

Nossa, essa solução do Ricardo de 2007 veio a calhar! Me quebrou um galhão hoje!! Tanto tempo depois...

to ficando viciado nesse swing!

Abraços.

----------------------------------------------
Adriano da Silva.
Trabalho com:
Java - NetBeans 6.9 - Swing/AWT/JDBC
PostGres
Windows e Linux(iniciante).
[WWW] [Yahoo!]
damghani
HelloWorld
[Avatar]

Membro desde: 07/04/2010 23:10:57
Mensagens: 14
Localização: Araraquara / SP
Offline

ricardo13 wrote:ola pessoal,

utilizei o jScrollPane1.getVerticalScrollBar().setValue(table.getHeight()); e funcionou, mas esta mostrando até o penúltimo....o último ainda tem q descer com a barra de rolagem.

Alguém sabe oq posso fazer ???

Ricardo

Cheguei a este tópico pelo Google, como os códigos postados aqui não funcionou segue um exemplo funcional que rola até a ultima linha criando um JScroll temporário.

Para utilizar basta invocar o método rolarScroll() após adicionar uma nova linha na JTable ou similar.

Att,
[Email] [MSN] [ICQ]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Outra opção é usar essa classe aqui, de um tópico igualmente antigo:
http://www.guj.com.br/java/88656-movimentar-jtable#474184

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team