Como deixar o método estático

3 respostas
Onimatsu
Boa noite pessoal. Preciso de ajuda para resolver este problema não sei se ainda falta mais estudo ou se realmente é complicado trabalhar com tabelas. Bom é o seguinte estou tentanto mostrar informações de veículos em uma tabela eu consigo faze-las aparecer só que quando adiciono um novo registro ele duplica o segundo, triplica o terceiro e assim por diante, acredito que seja pelo método não estar estático só que quando eu coloco o valor static ele mostra o erro non-static variable mapa cannot be referenced from a static context
package trabalho01;

import java.util.HashMap;
import java.util.Set;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Cadastro {

    private HashMap<Integer, Veiculo> mapa;

    public Cadastro() {
        mapa = new HashMap<Integer, Veiculo>();
    }

    public static void tabela(JTable tabela) {
        DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
        Set<Integer> chaves = mapa.keySet();
        for (Integer chave : chaves) {
            Veiculo v = mapa.get(chave);

            modelo.addRow(new Object[]{
                        v.getMarca(),
                        v.getModelo(),
                        v.getProprietario(),
                        v.getPlaca(),
                        v.getVaga()
                    });
        }
        if (modelo.getRowCount() == 0) {
            JOptionPane.showMessageDialog(null, "Nenhum registro encontrado");
        }
    }
}
depois tentei deixar a variável estática só que não ajudou muito o Veiculo v continua com o mesmo erro
package trabalho01;

import java.util.HashMap;
import java.util.Set;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Cadastro {

    private HashMap<Integer, Veiculo> mapa;
    private static Set<Integer> chaves;

    public Cadastro() {
        mapa = new HashMap<Integer, Veiculo>();
        chaves = mapa.keySet();
    }

    public static void tabela(JTable tabela) {
        DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
  
        for (Integer chave : chaves) {
            Veiculo v = mapa.get(chave);

            modelo.addRow(new Object[]{
                        v.getMarca(),
                        v.getModelo(),
                        v.getProprietario(),
                        v.getPlaca(),
                        v.getVaga()
                    });
        }
        if (modelo.getRowCount() == 0) {
            JOptionPane.showMessageDialog(null, "Nenhum registro encontrado");
        }
    }
}
Como posso deixar o método estático e não perder a função de chamar a chave do mapa para pegar o objeto com os dados do veículo?

3 Respostas

javaflex

Qual sua necessidade em deixar o método estático?

Onimatsu

javaflex:
Qual sua necessidade em deixar o método estático?
Não sei se vai fazer exatamente isso que estou pensando, mais, talvez se esse método ficar estático e sem erros os valores parem de repetir na tabela quando eu adicionar um novo registro.

javaflex

O fato de não usar método estático não tem haver diretamente em repetir registros. Isso é questão da lógica que está desenvolvendo. Pode ser que esteja deixando de limpar alguma lista, finalizar ou reinicializar algum objeto ou simplesmente mudar o escopo da instancia do objeto.

Criado 24 de março de 2013
Ultima resposta 24 de mar. de 2013
Respostas 3
Participantes 2