Inserir Linhas no JTable

7 respostas
K

Estou com uma termenda dúvida…
Criei,minha tabela ela apenas mostra o q foi cadastrado no banco, tenho meu table model também…
Porém não sei como fazer para inserir linhas, alguém pode me ajudar???

7 Respostas

TedLoprao

Quem insere linhas na JTable é o TableModel, se vc tem um TableModel próprio ele deve ter a capacidade de adicionar rows… É o TableModel que define quantas linhas devem aparecer no JTable!!!

K

Isso mesmo, ele só tá imprimindo na tabela os dados que estão no banco, porém ele não insere novas linhas, gostaria de saber como fazer isso…

K

Isso mesmo, ele só tá imprimindo na tabela os dados que estão no banco, porém ele não insere novas linhas, gostaria de saber como fazer isso…

TedLoprao

Pois é Kelly, isso depende da sua implementação do TableModel, agora se tu usaste o TableModel padrão, dá uma olhada na classe DefaultTableModel, ela possui métodos como addRow() que provavelmente solucionam as tuas dúvidas…

Qquer coisa posta aí!!!

Ps.: Se a implementação do TableModel foi sua, dependerá de como vc implementou o mesmo!!!

K

Dá uma olhadinha no meu código então…

import java.util.Vector;
import javax.swing.table.DefaultTableModel;

public class TabelaModel extends DefaultTableModel

{

private Vector dados;

MySql banco = new MySql();
public TabelaModel()
{
	super();
	initialize();
}


public void initialize() 
{
	try
	{
		dados = banco.consultar();
	}catch(Exception e){e.printStackTrace();}

}

public int getColumnCount() 
{
	return 16;
}

public String getColumnName(int arg0) 
{
		switch (arg0) 
		{
			case 0:
					return "Cliente";
			case 1:
					return "Localidade";
			case 2:
					return "Circuito";
			case 3:
					return "Tecnologia";
			case 4:
					return "Qrpvc";
			case 5:
					return "Qtport";
		    case 6:
					return "Qrport";
			case 7: 
					return "Qtpvc";
			case 8:
					return "Banda UtilizadaIn";
			case 9:
					return "CIR Outt";
			case 10:
					return "Banda UtilizadaOut";
			case 11:
					return "CIR Out";
			case 12:
					return "TUBIn";
			case 13:
					return "TUBOut";
			case 14:
					return "BCIn";
			case 15:
					return "BCOut";  
			default:
					return "unknow" + arg0;    
		}
}
public int getRowCount() 
{
	if (dados == null)
		return 0;
	else
		return dados.size();
}

public Object getValueAt(int linha, int coluna)
{
	switch (coluna)
	{
		case 0 :
			return ((TabelaBean) dados.get(linha)).getCliente();
		case 1 :
			return ((TabelaBean) dados.get(linha)).getLocalidade();
		case 2:
			return ((TabelaBean) dados.get(linha)).getCircuito();
		case 3:
			return ((TabelaBean) dados.get(linha)).getTecnologia();
		case 4:
			return Integer.toString(((TabelaBean)dados.get(linha)).getQrpvc());
	    case 5:
			return Integer.toString(((TabelaBean)dados.get(linha)).getQtport());
		case 6:
			return Integer.toString(((TabelaBean)dados.get(linha)).getQrport());
		case 7:
			return Integer.toString(((TabelaBean)dados.get(linha)).getQtpvc());
		case 8:
			return Integer.toString(((TabelaBean)dados.get(linha)).getBandaUtilizadaIn());
		case 9:
			return Integer.toString(((TabelaBean)dados.get(linha)).getCirin());
		case 10:
			return Integer.toString(((TabelaBean)dados.get(linha)).getBandaUtilizadaOut());
		case 11:
			return Integer.toString(((TabelaBean)dados.get(linha)).getCirout());
		case 12:
			return Integer.toString(((TabelaBean)dados.get(linha)).getTubIn());
		case 13:
			return Integer.toString(((TabelaBean)dados.get(linha)).getTubOut());
		case 14:
			return Integer.toString(((TabelaBean)dados.get(linha)).getBcin());
		case 15:
			return Integer.toString(((TabelaBean)dados.get(linha)).getBcOut());            
		default :
			return "unknow";
	}
}

}

TedLoprao

Hmmm, vc poderia por exemplo criar um método mais ou menos assim:

public void createEmptyRow() {
  dados.add(new TabelaBean());
  fireTableRowsInserted(dados.size() - 1, dados.size() - 1);
}

Ahh, vc vai ter que implementar o método setValueAt(Object o, int row, int column) para digitar os dados.

Também pode acontecer de seu getValueAt não tratar valores null como deve e isso pode lhe causar problemas…

Vc pode ter problemas ainda para inserir os novos dados no banco, não sei como vc pensa implementar isso… Talvez o melhor fosse criar uma TableModel com capacidade de descobrir o que não foi persistido ainda e o que já foi…

Mas espero que tenha lhe ajudado de alguma maneira!!!

K

Obrigada pela dica, deu tudo certo!!!

Criado 26 de julho de 2004
Ultima resposta 26 de jul. de 2004
Respostas 7
Participantes 2