AYUDA!!! No muestra datos JComboBox Dependiente

Estoy tratando de mostrar datos en un combobox que depende de los datos de otro combobox y me muestra este error.

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Cannot use this method with a non-Mutable data model.
        at javax.swing.JComboBox.checkMutableComboBoxModel(JComboBox.java:793)

Tengo un Modelo de Combobox Pais y otro Modelo de ComboBox Ciudad.

Este es el Modelo Pais.

package modelo.Pais;

import entidades.Pais;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;

public class ModeloComboboxPais extends AbstractListModel implements ComboBoxModel{
    List<Pais> listapais;
    Pais pais;

    public ModeloComboboxPais(List<Pais> paises){
        this.listapais = paises;
    }
    @Override
    public int getSize() {
        return listapais.size();
    }

    @Override
    public Object getElementAt(int index) {
        return listapais.get(index).toString();
    }
   
    public void setSelectedItem(Object o){
        if (o != null && listapais.size() > 0){
            for (Pais p : listapais){
                if (p.toString().equals(o.toString())){
                    pais = p;
                    break;
                }
            }
        }
    }

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

Este es el modelo Ciudad.

package modelo.Ciudad;

import entidades.Ciudad;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.MutableComboBoxModel;

public class ModeloComboboxCiudad extends AbstractListModel implements ComboBoxModel{
    List<Ciudad> listaciudad;
    Ciudad ciudad;

    public ModeloComboboxCiudad(List<Ciudad> ciudades){
        this.listaciudad = ciudades;
    }
    @Override
    public int getSize() {
        return listaciudad.size();
    }

    @Override
    public Object getElementAt(int index) {
        return listaciudad.get(index).toString();
    }
   
    public void setSelectedItem(Object o){
        if (o != null && listaciudad.size() > 0){
            for (Ciudad c : listaciudad){
                if (c.toString().equals(o.toString())){
                    ciudad = c;
                    break;
                }
            }
        }
    }

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

Entonces cuando selecciono el item en el primer combobox, trato de que me actualice el segundo combobox

    private void cbxPaisItemStateChanged(java.awt.event.ItemEvent evt) {                                        
               llenaJComboBoxCiudad();
    }  

Con este lleno el combobox pais.

    public void llenaJComboBoxPais() {
        modelPais.removeAllElements();
        List<Pais> p = pd.listadopais();
        cbxPais.setModel(new ModeloCombobox(p));
    }

Con este lleno el combobox ciudad.

    public void llenaJComboBoxCiudad() {
        modelPais.removeAllElements();
        Pais p = (Pais) cbxPais.getSelectedItem();
        List<Ciudad> c = cd.listadoCiudad(p);
        cbxCiudad.setModel(new ModeloComboboxCiudad(c));
    }

En el dao de Ciudad tengo listadoCiudad() con este codigo.

    public List<Ciudad> listadoCiudad(Pais p){
       
       List<Ciudad> lista = null;
       try {
           this.iniciarOperacion();
           lista = sesion.createCriteria(Ciudad.class)
                    .createAlias("pais", "p")
                    .add(Restrictions.eq("p.pais", p))
                    .addOrder(Order.asc("p.pais")).list();
       }catch(HibernateException he){
           throw he;
       }finally {
           if (sesion.isOpen()){
           sesion.close();
           }
       }
       return lista;
}

En el dao de Pais tengo listadoPais() con este codigo.

    public List<Pais> listadopais(){
       
       List<Pais> lista = null;
       try {
           this.iniciarOperacion();
           lista = sesion.createCriteria(Pais.class).addOrder(Order.asc("idpais")).list();
       }catch(HibernateException he){
           throw he;
       }finally {
           if (sesion.isOpen()){
           sesion.close();
           }
       }
       return lista;
   }

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

ActionPerformed

Me suena más a que puede ser un problema de tu ActionListener de tu cbxPais, puedes mostrarlo ?, espero te sirva mi ejemplo:

@SuppressWarnings("serial")
public class DoubleCombo extends JPanel {

        JComboBox combo1;

        DefaultComboBoxModel<Object> model1;

        JComboBox combo2;

        DefaultComboBoxModel<Object> model2;

        Object[][] array2 = new Object[][] {
                        new Object[] { "Element 1 - A" },
                        new Object[] { "Element 2 - A", "Element 2 - B" },
                        new Object[] { "Element 3 - A", "Element 3 - B", "Element 3 - C" } };

        public DoubleCombo() {
                setLayout(new FlowLayout());

                model1 = new DefaultComboBoxModel<Object>(new Object[] { "Element #1",
                                "Element #2", "Element #3" });
                combo1 = new JComboBox();
                combo1.setModel(model1);
                combo1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                Object obj = e.getSource();
                                int selectedIndex = ((JComboBox) obj).getSelectedIndex();
                                loadCombo2(selectedIndex);
                        }
                });
                add(combo1);

                model2 = new DefaultComboBoxModel<Object>();
                combo2 = new JComboBox();
                combo2.setModel(model2);
                add(combo2);

        }

        private void loadCombo2(int selectedIndex) {
                model2 = new DefaultComboBoxModel<Object>(array2[selectedIndex]);
                combo2.setModel(model2);
                combo2.revalidate();
        }

        public static void main(String[] args) {
                JFrame f = new JFrame();
                f.setTitle("Double ComboBox");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.getContentPane().add(new DoubleCombo());
                f.pack();
                f.setSize(320, 240);
                f.setVisible(true);
        }