Erro básico em função

5 respostas
Mind_Wanderer

Olá pessoal, tudo bem?

Eu estou com um erro bem bobo que eu não estou conseguindo arrumar:

tenho essa função:

public String getNome(){ 
    	iniciar();
    	int size=lista.size();
    	for (int i=0; i<size; i++) {
    		 nome = ((String) lista.get(i)).substring(0,50);
    	
    	
    	}
    	return nome;
    }

O problema que o return ali só retorna o último item da lista, que eu estou tentando jogar em:

class MyTableModel extends AbstractTableModel {
    
    private String[] columnNames = {"Nome","Telefone","Endereço"};
    private Object[][] data = {
        {getNome(),getTelefone(),getEndereco()},
    };

Gostaria de saber se é possível eu fazer isso da maneira que eu estou tentando.

Obrigado pela atenção,
Rodrigo>

5 Respostas

Hayros

tira o i do método, passa ele como argumento pro programa saber onde procurar.

Aí vc pega aquele for e ao invés de colocar ele dentro do getNome(), coloca getNome(i) dentro de um for.

Do jeito que tá ele sai o método escreve todos os nomes um em cima do outro e retorna o último mesmo. Vc tb pode retornar um array de nomes, mas aí tem que ver direito se isso serve pra o quê vc quer fazer. Como um array de duas dimensões é um array de arrays, vc pode dizer que

arr [][] = new object[10][]
example [] = new nome[10]
arr[0] = example;

alerta: Código do tipo “exemplo sujo”: Deve ter erros grotescos que eu não fui conferir pq acho que o importante é vc pegar a idéia o mais rápido possível.

Mind_Wanderer

Obrigado pela ajuda :slight_smile:

Ainda estou meio perdido com o código, mas vou vendo o que acontece aqui…

Na verdade eu leio uma linha em um arq txt com o comando iniciar, depois passo para uma arraylist… Queria passar para esse object data o nome, telefone, endereço para mostrar num jtable : /

Simples, mas estou me batendo ainda rs…

Obrigado :slight_smile:

Edit: Pessoal, ainda não consegui :frowning: Alguém pode me dar uma mão?

Mind_Wanderer

Tentei novamente e fiz o seguinte no main

for (int i=0; i<size; i++){
		getNome(i);
		System.out.println(nome);
	}

e reescrevi a classe de tal maneira:

private static  String getNome(int i) {

	iniciar();
 	nome = ((String) lista.get(i)).substring(0,50);
 	return nome;
	
}

E instanciei no tablemodel de tal maneira:

class MyTableModel extends AbstractTableModel {
    
	private String[] columnNames = {"Nome","Telefone","Endereço"};
        private Object[][] data = {
          {getNome(i),getFone(i),getEnd(i)}
        };

Só que, ele mostra somente o primeiro nome... Já olhei tutorial how to use tables do java e já pesquisei um monte... Não estou conseguindo resolver esse problema : / (sim, eu pesquisei bastante)

Alguém pode me dar uma luz?

Muito obrigado mesmo,
Rodrigo

Hayros

vc tem que colocar esse for na hora de fazer as atribuições;

private String [][] data = new String[3][length];
for(int i = 0; i < data.length; i++)
{
data[0][i] = getNome(i);
data[1][i] = getFone(i);
data[2][i] = getend(i);
}

Ou isso ou eu não estou entendendo direito a situação, caso no qual vc pode me mandar uma versão mais completa do código pra eu olhar com a calma que for preciso.

Mind_Wanderer

Então, o código é este…

Eu fiz usando originalmente Textfields e agora estava passando para JTable, mas não me acerto com o model. Mais precisamente com a definição do tamanho do vetor que precisava ter o mesmo tamanho da lista…

E se eu fosse adicionar itens e excluí-los, é possível mudar o tamanho do vetor pela variável size durante a execução do programa? (essa variável não está funcionando direito nessa definição de vetor, acho que porque ela está executando depois da definição do tamanho)

Desculpe se o código ficou imenso rs, ainda vou arrumá-lo.

[]'s
Rodrigo

Criado 10 de setembro de 2006
Ultima resposta 11 de set. de 2006
Respostas 5
Participantes 2