Preencher combobox com dados do banco Swing

pessoal estou precisando de uma ajudinha aqui estou fazendo um trabalho aq usando o swing tenhu que preencher o combobox com dados do banco
no entanto nao consigo indentificar o erros que estao ocorrendo se alguem puder me ajudar estou agradecido

este e o meu metodo que preenche
public final void preencher() {

    try {

        conectar();
        Selecionar.removeAllItems();
        result = stmt.executeQuery("select CategoriaID from categorias");

        List<String> preencher = new ArrayList<String>();

        while (result.next()) {
            preencher.add(result.getString("CategoriaID"));
        }
        DefaultComboBoxModel cmb = new DefaultComboBoxModel(preencher.toArray());
        Selecionar.setModel(cmb);

        fecharconexao();




    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e.toString());
    }

}

ao invés de JOptionPane.showMessageDialog(null, e.toString()); use e.printStackTrace(), e coloca o resultado aí para nós

ae tiago os erros que estao dando sao
java.lang.nullPointerExeception
ele tava dando um erro dizendo operation not allowed after resultset closed

E o que esse fecharconexao faz?!

ela fecha a conexao com o banco de dados aqui esta o codigo dela
public void fecharconexao() {
try {

        if (con != null) {
            con.close();
        }
        if (stmt != null) {
            stmt.close();
        }
        if (result != null) {
            result.close();
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);

    }
}

ae se alguem depois puder me ajudar aq agradeço