JTable

7 respostas
K

Bom dia

Eu gostaria de uma ajuda com JTables.

Eu fiz uma tabela que possui uma linha apenas.
Apos clicar um botao, mais uma linha e acrescentada.
O problema e que ela nao aparece, mostrando somente o cabeçalho e a primeira que ja existe.

Eu desabilitei o comando para ajuste do scrollpane com a tabela e percebo que a linha e inserida corretamente.
Como eu faço para atualizar o redimensionamento do scrollpane ao clicar o botao de inserção de linha? eu tentei inserir o setPreferredScrollableViewportSize apos adicionar a linha mas nao funcionou. Alguem pode me ajudar?

class listenerAddLinha implements ActionListener{

public void actionPerformed(ActionEvent event){

adicionaLinha();

tab.setPreferredScrollableViewportSize(tab.getPreferredSize());
}

}

Agradeço desde ja.

7 Respostas

L

tenta isso:

(JScrollPane).setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

K

Ola Lauro
Nao funcionou.
O que aconteceu a mesma coisa, aparecem a linha de cabeçalho mais a primeira linha.
ao clicar no botao, aparece o scroll do lado mas o painel nao e redimensionado automaticamente.

Mais alguma sugestão ?

L

o codigo que eu coloquei, nao é dentro do evento… ok?
é na construtor do jscroll
ja passei por esse problema, em casa tenho um aplicativo onde resolvi isso.
mas agora to no trampo

K

Eu coloquei na criação do objeto scroll dentro do metodo que cria o meu JScrollPane com a minha JTable. Mas mesmo assim a linha nao aparece.
Se eu omitir o “tab.setPreferredScrollableViewportSize(tab.getPreferredSize());” ai o scrollPane fica do tamanho da minha tela e quando eu adiciono uma linha ela aparece. mas eu queria deixar o scrollpane do tamanho exato da minha tabela.

public JScrollPane criaTabela(){
	ArrayList dados = new ArrayList();
	dados.add(new String[] {"","","","","",""});				
	String[] colunas = new String[] {"Produto","Pet Food","Quantidade","US/Kg","Câmbio","Total"};		
		
	mod = new SimpleTableModel(dados,colunas);		
	tab = new JTable(mod);					
	
	tab.setPreferredScrollableViewportSize(tab.getPreferredSize());		
			
	scroll = new JScrollPane(tab);		
	scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
	return scroll;		
}
L

ahh entendi…
mas se vc quer o scroll sempre do tamanho da tabela, entao pra que vc quer ele?
adiciona somente a tabela.

K

E a primeira coisa que eu fiz.
Mas ai o cabeçalho da tabela nao aparece.
Ai eu fui lendo aqui no forum uma forma de como fazer para ele aparecer, e postaram que o ideal seria colocar a tabela dentro do JScrollPane.
E ai deu certo, o cabeçalho apareceu.
Tem alguma outra forma de fazer o cabeçalho aparecer sem o JScrollPane?

K

Fala Lauro

Consegui o que eu queria
Acho que eu me expressei mal.
Na verdade nao e exatamente do tamanho da tabela que eu queria o scrollPane. Eu queria que ele me aparecesse algumas linhas antes de iniciar a carregar a barra de scroll.
Para tal eu setei o comando tab.setPreferredScrollableViewportSize(new Dimension(0,100);
e a altura do Scrollpane ficou do jeito que eu queria.

Valeu pela ajuda e me desculpa se me expressei mal.

Criado 11 de dezembro de 2007
Ultima resposta 11 de dez. de 2007
Respostas 7
Participantes 2