JTable - Excluir uma linha

Java

09/04/2009

Como faço pra excluir uma linha da minha JTable? assim: o cara faz uma pesquias no banco de dados e mostra na tabela, dai ele seleciona uma linha e aperta em um botão excluir, dai o registro selecionado é excluido do banco, mas a tabela fica estatica, tem um metodo que faz com que aque linha excluida desapareça?? []´s
Estevão Hess

Estevão Hess

Curtidas 0

Respostas

Lucas Teixeira

Lucas Teixeira

09/04/2009

((DefaultTableModel) suaTabela.getModel()).removeRow(indiceDaLinha);
Ve se funciona
GOSTEI 0
Louzadalima

Louzadalima

09/04/2009

Seguinte, Pelo que tenho percebido, muita gente tem dúvidas em relação a lidar com JTables. BOm, sempre que vc for modificar os valores (dados) de uma tabela, não é na tabela propriamente dita que você vai mexer, mas sim no modelo (TableModel). No momento em que você fez a consulta no banco, vocÊ alimentou esse table model para que o mesmo pudesse apresentar os dados de acordo com a necessidade do seu sistema certo??? Pois é, agora o caso é o mesmo, você modificou o banco de dados, porem não avisou o seu modelo que essa alteração existiu. Siga o seguinte esquema. Atualizações avisam o TableModel que avisa a Tabela.
GOSTEI 0
Estevão Hess

Estevão Hess

09/04/2009

[quote="lucastex"]
((DefaultTableModel) suaTabela.getModel()).removeRow(indiceDaLinha);
Ve se funciona
Lucas, o seguinte erro ocorre quando coloco o seguite codigo:
((DefaultTableModel) tabela.getModel()).removeRow(tabela.getSelectedRow()); 
cannot resolve symbol symbol: class DefaultTableModel Tem algum erro ai, ou isso não funciona mesmo??
GOSTEI 0
Carlos Coral

Carlos Coral

09/04/2009

Será que não está faltando um import?
import javax.swing.table.*;
Dá uma olhada ae.
GOSTEI 0
Edinei Manica

Edinei Manica

09/04/2009

Falta o import
import javax.swing.table.DefaultTableModel
GOSTEI 0
Estevão Hess

Estevão Hess

09/04/2009

Agora funcionou, tava faltando o import javax.swing.table.*; valeu
GOSTEI 0
Menina Poderosa

Menina Poderosa

09/04/2009

Eu quero apagar uma linha do JTable quando pressionar no [b]Botão Excluir[/b] A minha classe Principal tem os seguintes comandos :
public void actionPerformed(ActionEvent e) {    
					int result = JOptionPane.showConfirmDialog(null,"Deseja Excluir ? ","Excluir",JOptionPane.YES_NO_CANCEL_OPTION); 
					if(result == JOptionPane.YES_OPTION) { 
						[b]myTableParametros.deleteLine(1);[/b]	//						System.out.println("O botão sim foi pressionado");
					}
						else
						System.out.println("O botão não foi pressionado");
					}
				});


a classe tem os metodos deleteLine e deleteAll:
public class MyTableModel3 extends AbstractTableModel{ 
public boolean deleteLine(int line){ 
			linhas.remove(line); 
			return true; 
		} 
    
		public boolean deleteAll(){ 
			linhas.clear(); 
			return true; 
		} 




Mas não funciona corretamemente e estou tentando utilizar o comando indicado no post acima e não estou sabendo utilizar: :cry:
((DefaultTableModel) myTableParametros.getModel()).removeRow(myTableParametros.getSelectedRow());


GOSTEI 0
Edinei Manica

Edinei Manica

09/04/2009

[quote="Menina Super Poderosa"]Eu quero apagar uma linha do JTable quando pressionar no [b]Botão Excluir[/b] A minha classe Principal tem os seguintes comandos :
public void actionPerformed(ActionEvent e) {    
					int result = JOptionPane.showConfirmDialog(null,"Deseja Excluir ? ","Excluir",JOptionPane.YES_NO_CANCEL_OPTION); 
					if(result == JOptionPane.YES_OPTION) { 
						[b]myTableParametros.deleteLine(1);[/b]	//						System.out.println("O botão sim foi pressionado");
					}
						else
						System.out.println("O botão não foi pressionado");
					}
				});


a classe tem os metodos deleteLine e deleteAll:
public class MyTableModel3 extends AbstractTableModel{ 
public boolean deleteLine(int line){ 
			linhas.remove(line); 
			return true; 
		} 
    
		public boolean deleteAll(){ 
			linhas.clear(); 
			return true; 
		} 




Mas não funciona corretamemente e estou tentando utilizar o comando indicado no post acima e não estou sabendo utilizar: :cry:
((DefaultTableModel) myTableParametros.getModel()).removeRow(myTableParametros.getSelectedRow());

É que o codigo não ta completo, e as JTable tem diversas formas de ser implementadas e para cada uma dessas formas tem um jeito correto para deletar, então com este pouco de código tá dificil de descobrir qual é o problema !!! :arrow: :arrow:
GOSTEI 0
Menina Poderosa

Menina Poderosa

09/04/2009

Meu amigo, o codigo já esta funcionando, a linha esta sendo apagada corretamente, o problema é o seguinte: O JTable somente atualiza a tabela (remove a linha) quando, por exemplo, maximizar ou mininar a janela. Eu que gostaria que a atualização fosse feito no momento que em o botão YES for pressionado.
GOSTEI 0
Edinei Manica

Edinei Manica

09/04/2009

[quote="Menina Super Poderosa"]Meu amigo, o codigo já esta funcionando, a linha esta sendo apagada corretamente, o problema é o seguinte: O JTable somente atualiza a tabela (remove a linha) quando, por exemplo, maximizar ou mininar a janela. Eu que gostaria que a atualização fosse feito no momento que em o botão YES for pressionado.
experimenta usar :
tabela.repaint();
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="Edinei Manica"][quote="Menina Super Poderosa"]Meu amigo, o codigo já esta funcionando, a linha esta sendo apagada corretamente, o problema é o seguinte: O JTable somente atualiza a tabela (remove a linha) quando, por exemplo, maximizar ou mininar a janela. Eu que gostaria que a atualização fosse feito no momento que em o botão YES for pressionado.
experimenta usar :
tabela.repaint();
o metodo [b]validate()[/b] também faz milagres! :)
GOSTEI 0
Menina Poderosa

Menina Poderosa

09/04/2009

Funcionou.. Valeu!! :!:
GOSTEI 0
Edinei Manica

Edinei Manica

09/04/2009

[quote="Menina Super Poderosa"]Funcionou.. Valeu!! :!:
funcionou com o repaint() ou com o revalidate () ?
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="Edinei Manica"][quote="Menina Super Poderosa"]Funcionou.. Valeu!! :!:
funcionou com o repaint() ou com o revalidate () ?
ambos funcionam legal..... o validate() é um metodo que eh herdado de container, por isso, dah o repaint em tudo... já o repaint() é herdade de component, ou seja, repinta apenas akele objeto... :!: :!: :o
GOSTEI 0
Edinei Manica

Edinei Manica

09/04/2009

[quote="lucastex"][quote="Edinei Manica"][quote="Menina Super Poderosa"]Funcionou.. Valeu!! :!:
funcionou com o repaint() ou com o revalidate () ?
ambos funcionam legal..... o validate() é um metodo que eh herdado de container, por isso, dah o repaint em tudo... já o repaint() é herdade de component, ou seja, repinta apenas akele objeto... :!: :!: :o Valeu, então é por isso, eu tava fazendo uma tela aqui e tava dando um repaint() e ela não estava sendo atualizada, dai eu tentei com o revalidate() e deu certo!!! Valeu!!!
GOSTEI 0
Lucas Teixeira

Lucas Teixeira

09/04/2009

[quote="Edinei Manica"][quote="lucastex"][quote="Edinei Manica"][quote="Menina Super Poderosa"]Funcionou.. Valeu!! :!:
funcionou com o repaint() ou com o revalidate () ?
ambos funcionam legal..... o validate() é um metodo que eh herdado de container, por isso, dah o repaint em tudo... já o repaint() é herdade de component, ou seja, repinta apenas akele objeto... :!: :!: :o exatamente..... o repaint, voce usa para componentes, já telas, e containers.. o ideal eh o validate()... Edinei... PS.: é validate() e nao revalidate() ok?? :!: :!: :!: Valeu, então é por isso, eu tava fazendo uma tela aqui e tava dando um repaint() e ela não estava sendo atualizada, dai eu tentei com o revalidate() e deu certo!!! Valeu!!!
GOSTEI 0
POSTAR