Como deixar o método estático

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[code]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");
    }
}

}
[/code]depois tentei deixar a variável estática só que não ajudou muito o Veiculo v continua com o mesmo erro[code]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");
    }
}

}
[/code]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?

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

[quote=javaflex]Qual sua necessidade em deixar o método estático?[/quote]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.

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.