Erro seguindo Tutorial

5 respostas
airmigjr

Olá pessoal,
estou seguindo o tutorial que está no seguinte endereço: [url]http://www.guj.com.br/articles/147[/url], e montando a classe principal, me deparei com uma mensagem de erro fornecida pelo eclipse, sublinhando uma instrução. O trecho do código é o seguinte: (já alterado pelo Eclipse)

while(((java.util.Iterator) i).hasNext()){  
	        // Obtem as colunas da linha atual  
	        String[] linhaCorrente = 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;                  
	        }  
	    }

Vejam que no trecho do código do tutorial (texto original):

while(i.hasNext()){  
                       
        }  
    }
houve uma alteração proposta pelo eclipse, e que eu aceitei, que foi o cast inserido dentro da condição do while (segue código alterado pelo eclipse):
while(((java.util.Iterator) i).hasNext()){  
	                    
	        }  
	    }

Porém, houve outra situação problemática, que foi no trecho abaixo:

String[] linhaCorrente = (String[])i.next();

que o Eclipse diz que não pôde fazer o cast de i.next para vetor String.
Tirei o cast mas não encontrei solução.

Alguém poderia me ajudar?

Agradeço,

Obrigado,

5 Respostas

airmigjr

Alguém poderia me ajudar? Preciso resolver esse problema até quarta-feira…plz…

drsmachado

E que tipo de variável é i?

airmigjr

Do tipo Iterator.
É isso mesmo?

drsmachado

airmigjr:
Do tipo Iterator.
É isso mesmo?

Não.
Posta a classe inteira e a mensagem de erro.

airmigjr

Segue a classe toda: (O Iterator está no método que está como comentário)

package swing;

import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.text.html.HTMLDocument.Iterator;

public class SimpleTableModel extends AbstractTableModel {
	//guardar os dados que queremos exibir
	private ArrayList linhas = null;
	private String [] colunas = null;
	
	public String [] getColunas() {
		return colunas;
		}
	public ArrayList getLinhas() {
		return linhas;
		}  
    public void setColunas(String[] strings) {
    	colunas = strings;
    	}  
    public void setLinhas(ArrayList list) {
    	linhas = list;
    	}
/* implementar os métodos que fornecem a JTable os dados suficientes para ela saber montar 
    a parte visual: o numero de colunas, numero de linhas e os valores para preencher as células */
    /** 
     * Retorna o numero de colunas no modelo 
     * @see javax.swing.table.TableModel#getColumnCount() 
     */  
    
    
    @Override
	public int getColumnCount() {
		// TODO Auto-generated method stub
		/** 
		 * Retorna o numero de linhas existentes no modelo 
		 * @see javax.swing.table.TableModel#getRowCount() 
		 */  
		return getColunas().length;
	}

	@Override
	public int getRowCount() {
		// TODO Auto-generated method stub
		
		/** 
		 * Obtem o valor na linha e coluna 
		 * @see javax.swing.table.TableModel#getValueAt(int, int) 
		 */ 
		return getLinhas().size();
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		// TODO Auto-generated method stub
		// Obtem a linha, que é uma String []  
		String [] linha = (String [])getLinhas().get(rowIndex);  
	    // Retorna o objeto que esta na coluna  
	    return linha[columnIndex];
	}
	
	/*//Construtor da classe que irá receber os dados e as colunas que desejamos
	
	public SimpleTableModel(ArrayList dados, String[] colunas){  
	    setLinhas(dados);  
	    setColunas(colunas);  
	}  */
	
	//Construtor da classe que irá receber os dados e as colunas que desejamos e
	//Construtor com edição das células
	
	public SimpleTableModel(ArrayList dados, String[] colunas, boolean [] edicao){  
	    setLinhas(dados);  
	    setColunas(colunas);  
	    colsEdicao = edicao;  
	}  
	
	//Método que cria a JTable
	
	public JTable createJTable() {  
		  
	    ArrayList dados = new ArrayList();  
	    String[] colunas = new String[] { "Estado", "Cidade" }; 
	    boolean [] edicao = {false, true};
	  
	    // Alimenta as linhas de dados  
	    dados.add(new String[] { "SP", "São Paulo" });  
	    dados.add(new String[] { "RJ", "Rio de Janeiro" });  
	    dados.add(new String[] { "RN", "Rio Grande do Norte" });  
	    dados.add(new String[] { "ES", "Espirito Santo" });  
	  
	    SimpleTableModel modelo = new SimpleTableModel(dados, colunas, edicao);  
	    JTable jtable = new JTable(modelo);  
	    jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  
	  
	    return jtable;  
	  
	} 
	private boolean [] colsEdicao;  
	public boolean isCellEditable(int row, int col){  
	    return colsEdicao[col];  
	}  
	
	//Método que efetivamente altera o conteúdo da JTable
	
	/** 
	 * Seta o valor na linha e coluna 
	 * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int) 
	 */  
	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);  
	} 
	
	//Método para inserir uma nova linha no modelo:
	
	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;  
	}  
	
	//Método para exclusão de linhas existentes:
	
	public void removeRow(int row){  
	    getLinhas().remove(0);  
	    // informa a jtable que houve dados deletados passando a   
	    // linha reovida  
	    fireTableRowsDeleted(row,row);  
	}  
	  
	  
	/** 
	 * Remove a linha pelo valor da coluna informada 
	 * @param val 
	 * @param col 
	 * @return 
	 */  
/*	public boolean removeRow(String val, int col){  
	    // obtem o iterator  
	    Iterator i = (Iterator) getLinhas().iterator();  
	    int linha = 0;  
	    // Faz um looping em cima das linhas  
	    while(((java.util.Iterator) 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;  
	}  */
	
	// Implementação do getColumnName  
	  
	/** 
	 * Retorna o nome da coluna. 
	 * @see javax.swing.table.TableModel#getColumnName(int) 
	 */  
	public String getColumnName(int col){  
	    return getColunas()[col];  
	}  
	
	

}
Criado 27 de janeiro de 2012
Ultima resposta 31 de jan. de 2012
Respostas 5
Participantes 2