JComboBox JAVA dúvida

galera, tenho 2 JComboBox, sendo que o as opções do segundo JCombo depende da opção do primeiro, ou seja, se no primeiro a pessoa marcar “X” no segundo aparece “xxx”, e se a pessoa marcar “Y” no primeiro, no segundo aparece “YYY”, acontece que, criei essa condição com o if, e até funciona, mas apenas uma vez… quando eu mudo novamente a opção do primeiro JComboBox, o segundo permanece nas opções… tentei fazer um do{}while, mas n deu certo… Alguém pode ajudar?

String[] g1 = new String[]{"Matematica", "Fisica", "Ciencias da Computacao"};
            String[] g2 = new String[]{"Medicina", "Odontologia", "Farmacia"};
            String[] g3 = new String[]{"Biologia geral", "Genetica", "Morfologia"};
            String[] g4 = new String[]{"Medicina Veterinaria", "Engenharia Agricola", "Agronomia"};
            String[] g5 = new String[]{"Engenharia quimica", "Engenharia Civil", "Engenharia de minas"};
            String[] g6 = new String[]{"Administracao", "Direito", "Economia"};
            String[] g7 = new String[]{"Antropologia", "Filosofia", "Sociologia"};
            
            String[] gAreas = new String[] {"Ciencias Exatas e da Terra", "Ciencias da Saude", "Ciencias Biologicas", "Ciencias Agrarias", "Engenharias", "Ciencias Sociais aplicadas", "Ciencias Humanas"};
            JComboBox<String> allAreas = new JComboBox<String>(gAreas);
            
            icl.add(allAreas);
            String selected = (String) allAreas.getSelectedItem();
            
            
            if(selected.equals("Ciencias Exatas e da Terra"))
            {
               JComboBox<String> peqAreas = new JComboBox<String>(g1);
                  
               icl.add(peqAreas);
            }
            else if(selected.equals("Ciencias da Saude")){
               JComboBox<String> peqAreas = new JComboBox<String>(g2);
               icl.add(peqAreas);
            }
            else if(selected.equals("Ciencias Biologicas")){
               JComboBox<String> peqAreas = new JComboBox<String>(g3);
               icl.add(peqAreas);
            }
            else if(selected.equals("Ciencias Agrarias")){
               JComboBox<String> peqAreas = new JComboBox<String>(g4);
               icl.add(peqAreas);
            }
                   
            else if(selected.equals("Engenharias")){
               JComboBox<String> peqAreas = new JComboBox<String>(g5);
               icl.add(peqAreas);
            }
                            
            else if(selected.equals("Ciencias Sociais aplicadas")){
               JComboBox<String> peqAreas = new JComboBox<String>(g6);
               icl.add(peqAreas);
            }
                                 
            else if(selected.equals("Ciencias Humanas")){
               JComboBox<String> peqAreas = new JComboBox<String>(g7);
               icl.add(peqAreas);
            }

(Não coloquei o código todo, caso questionem a respeito da criação de alguns elementos q está faltando…)
desde já, obrigado!!!

Como a execução do programa acontece de cima para baixo, está verificando os ifs e elses somente uma vez. É necessario executar novamente os comandos de decisão para que as opções do combo sejam selecionadas. Uma opção, penso, seria voce colocar esses ifs dentro de um metodo, e executar esse metodo sempre que voce escolher a opção, talvez usando o ActionListener

Procure sempre criar uma estrutura orientada à objetos para representar sua necessidade.
Ao invés de String, sugiro criar uma classe Area e outra classe derivada chamada GrandeArea, que contém instâncias de Area correspondentes às pequenas àreas que compões cada grande área.

Classe Area:

public class Area {

    public final String nome;

    public Area(String nome) {
        if (nome == null) {
            throw new IllegalArgumentException("null");
        }
        this.nome = nome;
    }

    public boolean equals(Object obj) {
        if (obj instanceof Area) {
            Area that = (Area) obj;
            return this.nome.equals(that.nome);
        }
        return false;
    }

    @Override
    public int hashCode() {
        return nome.hashCode();
    }

    @Override
    public String toString() {
        return nome;
    }
}

Classe GrandeArea:

public class GrandeArea extends Area {

    public final Area[] pequenasAreas;

    public GrandeArea(String nome, Area... pequenasAreas) {
        super(nome);
        this.pequenasAreas = pequenasAreas;
    }
}

Exemplo de utilização:

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Exemplo {

    private ComboBoxModelArea grandesAreasModel;
    private ComboBoxModelArea pequenasAreasModel;
    private JComboBox<Area> comboGrandesAreas;
    private JComboBox<Area> comboPequenasAreas;

    public static void main(String[] args) {
        Exemplo programa = new Exemplo();
        programa.executar();
    }

    // ComboBoxModel para combos que renderizam Areas
    private class ComboBoxModelArea extends DefaultComboBoxModel<Area> {

        private Area[] areas;

        public void setAreas(JComboBox comboBox, Area... areas) {
            this.areas = areas;
            fireContentsChanged(comboBox, 0, areas.length);
        }

        @Override
        public Area getElementAt(int index) {
            return areas == null ? null : areas[index];
        }

        @Override
        public int getSize() {
            return areas == null ? 0 : areas.length;
        }
    }

    public void executar() {
        grandesAreasModel = new ComboBoxModelArea();
        comboGrandesAreas = new JComboBox<Area>(grandesAreasModel);
        comboGrandesAreas.addItemListener(event -> selecionouGrandeArea((GrandeArea) event.getItem()));
        grandesAreasModel.setAreas(comboGrandesAreas, criarGrandesAreas());

        pequenasAreasModel = new ComboBoxModelArea();
        comboPequenasAreas = new JComboBox<Area>(pequenasAreasModel);

        JFrame frame = new JFrame("Exemplo");
        Container container = frame.getContentPane();
        container.setLayout(new GridLayout(1, 2));
        container.add(comboGrandesAreas);
        container.add(comboPequenasAreas);
        frame.setMinimumSize(new Dimension(600, 80));
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private void selecionouGrandeArea(GrandeArea grandeArea) {
        pequenasAreasModel.setAreas(comboPequenasAreas, grandeArea.pequenasAreas);
    }

    private GrandeArea[] criarGrandesAreas() {
        return new GrandeArea[] {
                criarCienciasExatasDaTerra(),
                criarCienciasDaSaude(),
                criarCienciasBiologicas(),
                criarCienciasAgrarias(),
                criarEngenharias(),
                criarCienciasSociaisAplicadas(),
                criarCienciasHumanas()
        };
    }

    private GrandeArea criarCienciasHumanas() {
        return new GrandeArea("Ciencias Humanas",
                              new Area[] {
                                      new Area("Antropologia"),
                                      new Area("Filosofia"),
                                      new Area("Sociologia")
                              });
    }

    private GrandeArea criarCienciasSociaisAplicadas() {
        return new GrandeArea("Ciencias Sociais aplicadas",
                              new Area[] {
                                      new Area("Administracao"),
                                      new Area("Direito"),
                                      new Area("Economia")
                              });
    }

    private GrandeArea criarEngenharias() {
        return new GrandeArea("Engenharias",
                              new Area[] {
                                      new Area("Engenharia quimica"),
                                      new Area("Engenharia Civil"),
                                      new Area("Engenharia de minas")
                              });
    }

    private GrandeArea criarCienciasAgrarias() {
        return new GrandeArea("Ciencias Agrarias",
                              new Area[] {
                                      new Area("Medicina Veterinaria"),
                                      new Area("Engenharia Agricola"),
                                      new Area("Agronomia")
                              });
    }

    private GrandeArea criarCienciasBiologicas() {
        return new GrandeArea("Ciencias Biologicas",
                              new Area[] {
                                      new Area("Biologia geral"),
                                      new Area("Genetica"),
                                      new Area("Morfologia")
                              });
    }

    private GrandeArea criarCienciasDaSaude() {
        return new GrandeArea("Ciencias da Saude",
                              new Area[] {
                                      new Area("Medicina"),
                                      new Area("Odontologia"),
                                      new Area("Farmacia")
                              });
    }

    private GrandeArea criarCienciasExatasDaTerra() {
        return new GrandeArea("Ciencias Exatas e da Terra",
                              new Area[] {
                                      new Area("Matematica"),
                                      new Area("Fisica"),
                                      new Area("Ciencias da Computacao")
                              });
    }
}