ArrayList em JTable

4 respostas
augustocolom

Olá pessoal,

Alguém tem uma sugestão de como inserir valores de um ArrayList em um JTable? Preciso informar somente 2 atributos na JTable.

4 Respostas

Henrique_Moraes

Tente criar um modelo com AbstractTableModel…
aqui tem algumas dicas, http://www.guj.com.br/posts/list/210285.java
vlw

S
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.table.AbstractTableModel;

public class SimpleTableModel extends AbstractTableModel{
    

	private ArrayList linhas = null;
	private String [] colunas = null;
	private boolean [] colsEdicao;

	public SimpleTableModel(ArrayList dados, String[] colunas, boolean [] edicao){
            setLinhas(dados);
            setColunas(colunas);
            colsEdicao = edicao;
	}

	public int getColumnCount() {return getColunas().length;}

	public int getRowCount() {return getLinhas().size();}

	public Object getValueAt(int rowIndex, int columnIndex) {
		// Obtem a linha, que é uma String []
		String [] linha = (String [])getLinhas().get(rowIndex);
		// Retorna o objeto que esta na coluna
		return linha[columnIndex];
	}

        public String[] getLinha(int row)
        {
            String [] linha = (String[])getLinhas().get(row);
            return linha;
        }
        
	public String[] getColunas() {return colunas;}
	public ArrayList getLinhas() {return linhas;}
	public void setColunas(String[] strings) {colunas = strings;}
	public void setLinhas(ArrayList list) {linhas = list;}
	
	public void setValueAt(Object value, int row, int col){
		// Obtem a linha, que é uma String []
		String [] linha = (String [])getLinhas().get(row);
		// Altera o conteudo no indice da coluna passado
		linha[col] = (String)value;
		// dispara o evento de celula alterada
		fireTableCellUpdated(row,col);
	}

	public boolean isCellEditable(int row, int col){
		return colsEdicao[col];
	}
	
	public void addRow( String [] dadosLinha){
		getLinhas().add(dadosLinha);
		// Informa a jtable de que houve linhas incluidas no modelo
		// COmo adicionamos no final, pegamos o tamanho total do modelo
		// menos 1 para obter a linha incluida.
		int linha = getLinhas().size()-1;
		fireTableRowsInserted(linha,linha);
		return;
	}

	public void removeRow(int row){
		getLinhas().remove(0);
		// informa a jtable que houve dados deletados passando a 
		// linha removida
		fireTableRowsDeleted(row,row);
	}
	
	public boolean removeRow(String val, int col){
		// obtem o iterator
		Iterator i = getLinhas().iterator();
		int linha = 0;
		// Faz um looping em cima das linhas
		while(i.hasNext()){
			// Obtem as colunas da linha atual
			String[] linhaCorrente = (String[])i.next();
			linha++;
			// compara o conteudo String da linha atual na coluna desejada
			// com o valor informado
			if( linhaCorrente[col].equals(val) ){
				getLinhas().remove(linha);
				// informa a jtable que houve dados deletados passando a 
				// linha removida
				fireTableRowsDeleted(linha,linha);
				return true;				
			}
		}
		// Nao encontrou nada
		return false;
	}
	
	public String getColumnName(int col){
		return getColunas()[col];
	}

}
Usa essa classe assim...
JTable minhaTabela = new JTable();
SimpleTableModel stm = new SimpleTableModel(meuArray, colunas, editavel);
minhaTabela.setModel(stm);

Acho que é isso ai... Mas é importante vc dar uma estudada nisso, pq se vc não entender a JTable bem, vc vai se atrapalhar mais para frente...

Lucas_de_Almeida_Mar

Vlws meu irmão era isso que eu estava procurando!

Muito obrigado mesmo!

S

augustocolom:
Olá pessoal,

Alguém tem uma sugestão de como inserir valores de um ArrayList em um JTable? Preciso informar somente 2 atributos na JTable.

sim comece pegando um tutorial e fazendo
depois poste aqui a sua dúvida pois desse jeito nem sei em que te ajudar sendo que
estás com a faca e o queijo na mão.

Criado 25 de junho de 2010
Ultima resposta 3 de set. de 2013
Respostas 4
Participantes 5