Problema ao selecionar item dentro do JComboBox

Bom dia, pessoal

Criei um combobox e adicionei dados de uma tabela. O problema é que nao nao consigo selecionar um item dentro do combobox, é como se estivesse estatico, ou sem evento no teclado para manipular os itens dentro do combobox.
Estou usando a IDE netbeans e criei um JFrame.
está aqui o codigo
Classe DAO

[code]public List getListaCombo() throws SQLException{

    String sql = "select * from cadastro order by nome";   
    PreparedStatement stmt = this.conexao.prepareStatement(sql);   
    ResultSet rs = stmt.executeQuery();   

    List<Cadastro> minhalista = new ArrayList<Cadastro>();   

    while (rs.next()){   

        Cadastro cad = new Cadastro();   
        cad.setNome(rs.getString("nome"));   
        minhalista.add(cad);   
    }   
    rs.close();   
    stmt.close();   
    return minhalista;   
} [/code]

classe JFrame

[code]private void listaCombo() throws SQLException{
CadastroDao dao;
try {
dao = new CadastroDao();
List minhalista = dao.getListaCombo();

        CbxCadastro.removeAllItems();   
        CbxCadastro.setMaximumRowCount(5);   
        CbxCadastro.addItem("<Selecione>");   
        for (int i = 0; i < minhalista.size(); i++) {   
            CbxCadastro.addItem(minhalista.get(i).getNome());   
        }   
    } catch (SQLException ex) {   
        JOptionPane.showMessageDialog(null,"Erro no CbxCadastro ! " + ex);   
    }   
}[/code] 

private void CbxCadastroActionPerformed(java.awt.event.ActionEvent evt) { try { listaCombo(); } catch (SQLException ex) { Logger.getLogger(JFCadastro.class.getName()).log(Level.SEVERE, null, ex); } }
Eu acho estranho é que se eu tirar o

CbxCadastro.removeAllItems();

eu consigo selecionar um item, mas fica duplicando os itens dentro do combobox.
Se alguem puder mim ajudar, agradeço

Você precisa usar um Modelo e usar o Objeto diretamente no modelo.

Segue exemplo:

[code]JComboBox cb = new JComboBox();

//Pegar uma lista de objetos (aqui Cliente, esse objeto deve estar com o metodos: equals, compareTo e hashCode)
ArrayList lista = new ClienteDAO().lista();

// Criar o modelo que vai usar no componente
ArrayListComboBoxModel modeloLista = new ArrayListComboBoxModel(lista);

// Associar o modelo ao JComboBox
cb.setModel(modeloLista);

// Criar um item qualquer o qual queira selecionar no modelo (e JComboBox)
Cliente item = new Cliente();
item.setNome(“Nome do cliente”);
item.setCodigo(123);

// Selecionar diretametne no modelo
modeloLista.setSelectedItem(item);
[/code]

Classe para criar o modelo:

[code]import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.MutableComboBoxModel;

public class ArrayListComboBoxModel extends AbstractListModel implements MutableComboBoxModel {

private Object selectedItem;
private List list;

public ArrayListComboBoxModel() {
    this.list = new ArrayList();
}

public ArrayListComboBoxModel(List list) {
    this.list = new ArrayList(list);
}

public void setList(List list) {
    this.list = list;
    fireContentsChanged(this, 0, list.size());
}

@Override
public int getSize() {
    return list.size();
}

@Override
public Object getElementAt(int i) {
    try {
        return list.get(i);
    } catch (java.lang.IndexOutOfBoundsException ex) {
        return null;
    }
}

@Override
public Object getSelectedItem() {
    return selectedItem;
}

public Integer getSelectedIndex() {
    int index = list.indexOf(this.getSelectedItem());
    return index;
}

@Override
public void setSelectedItem(Object newValue) {
    selectedItem = newValue;
    fireContentsChanged(this, -1, list.size());
}

// MutableComboBoxModel
public void setElementAt(Object element, int index) {
    list.set(index, element);
    // Added at end, notify ListDataListener objects
    int length = getSize();
    fireIntervalAdded(this, length - 1, length - 1);
}

// MutableComboBoxModel
@Override
public void addElement(Object element) {
    list.add(element);
    // Added at end, notify ListDataListener objects
    int length = getSize();
    fireIntervalAdded(this, length - 1, length - 1);
}

@Override
public void insertElementAt(Object element, int index) {
    // Insert the element at the specified position
    list.add(index, element);
    // Added in middle, notify ListDataListener objects
    fireIntervalAdded(this, index, index);
}

@Override
public void removeElement(Object element) {
    // Find out position
    int index = list.indexOf(element);
    if (index != -1) {
        // Remove an element
        list.remove(element);
        // Removed from middle, notify ListDataListener objects
        fireIntervalRemoved(this, index, index);
    }
}

public void removeAllItens() {
    if (list != null && list.size() > 0) {
        list.clear();
        fireContentsChanged(this, -1, list.size());
    }
}

@Override
public void removeElementAt(int index) {
    if (getSize() >= index) {
        // Remove an element at the specified position
        list.remove(index);
        // Removed from index, notify ListDataListener objects
        fireIntervalRemoved(this, index, index);
    }
}

}
[/code]

Eu modifiquei o metodo listaCombo(), para

[code] private void listaCombo() throws SQLException{
CadastroDao dao = new CadastroDao();
ArrayList minhalista = (ArrayList) dao.getListaCombo();

    DefaultComboBoxModel defaultComboBox = new
            DefaultComboBoxModel(minhalista.toArray());

    CbxCadastro.setMaximumRowCount(5);
    CbxCadastro.setModel(defaultComboBox);
    CbxCadastro.setSelectedIndex(-1);

    EdtNome.setText(CbxCadastro.getSelectedItem().toString());
    EdtCodigo.setText(String.valueOf(CbxCadastro.getSelectedIndex()));

}[/code]
Mas está dando o sequinte erro.

[list]run:
Conectando ao banco …
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Forms.JFCadastro.listaCombo(JFCadastro.java:212)
at Forms.JFCadastro.CbxCadastroActionPerformed(JFCadastro.java:196)
at Forms.JFCadastro.access$200(JFCadastro.java:17)
at Forms.JFCadastro$3.actionPerformed(JFCadastro.java:76)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
at javax.swing.JComboBox.contentsChanged(JComboBox.java:1311)
at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:100)
at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:88)
at javax.swing.JComboBox.actionPerformed(JComboBox.java:1294)
at Forms.JFCadastro.BtnNovoActionPerformed(JFCadastro.java:186)
at Forms.JFCadastro.access$300(JFCadastro.java:17)
at Forms.JFCadastro$4.actionPerformed(JFCadastro.java:142)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 17 segundos)[/list]

O que será que aconteceu…

A excessão ja diz tudo…

mas me diz, para que:

CbxCadastro.setSelectedIndex(-1);

nao teria que ser “0” ?

Colocando “-1” eu consigo selecionar qualquer item dentro da combo, mas dá esse erro postado acima.
Se eu colocar “0”, fica setado so no primeiro item e nao consigo selecionar outro item dentro da combo e nao dá esse erro postado acima.
Se vc puder mi ajudar eu agradeço.

java.lang.NullPointerException 

diz respeito a um objeto que nao foi inicializado ou nao existe.

Vc poderia me orientar melhor pelo os codigo que postei ai acima, pois eu nao consegui encontrar o erro.
Fico grato pela compeensao.

Cara já tive um problema desse uma vez, e por mais estranho que possa parecer, e é, tenta manter o código de listar seu antigo, mas troca a chamada pro método CbxCadastro.removeAllItems(), remove item por item da JComboBox.

Coloquei o metodo com o for e tentei remover item por item nao resolveu, valeu pela tentativa,

Se alguem puder me ajudar eu agradeço.