Como atualizar uma combobox no clique de outra

Vi vários posts por aqui com este mesmo propósito, mas não respondia exatamente meu problema. Eu tenho 3 comboBox, e no clique da primeira(que é carregada por um arraylist, na abertura da tela), atualizo a segunda, que atualiza a terceira, que atualiza alguns campos. Todo esse processo já funciona. Porém, quando eu redefinir o item selecionado da primeira, quero resetar todo o resto, para recomeçar o processo. Como posso fazer isso?

Está assim, até agora:

private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
   for(int i=0;i<Cinema.filmes.size();i++){
       boxFilme.addItem(Cinema.filmes.get(i).getNome());
   }
   boxPreco.setEnabled(false);
   boxIngresso.setEnabled(false);
   vender.setEnabled(false);
}                                 

private void boxFilmeActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String searchedName=boxFilme.getSelectedItem().toString();
    ArrayList<Integer> foundedRooms=new ArrayList();
        for(int i=0;i<Cinema.salas.size();i++){
            if(Cinema.salas.get(i).getFilme().equals(searchedName)){
                foundedRooms.add(Cinema.salas.get(i).getId());
            }
        }
        for(int j=0;j<foundedRooms.size();j++){
            String converted=String.valueOf(foundedRooms.get(j));
            boxSala.addItem(converted);
        }    
}                                        

private void boxSessaoActionPerformed(java.awt.event.ActionEvent evt) {                                          
    int tempRoom=Integer.parseInt(boxFilme.getSelectedItem().toString());
    String tempSession=boxSessao.getSelectedItem().toString();
        for(int i=0;i<Cinema.salas.size();i++){
            if(Cinema.salas.get(i).getId()==tempRoom){
                if(Cinema.salas.get(i) instanceof Sala2D){
                    String converted=String.valueOf(Cinema.salas.get(i).checkCost());
                    boxPreco.setText(converted);
                    boxTipo.addItem(MESSAGE2D);
                }
                else if(Cinema.salas.get(i) instanceof Sala3D){
                    String converted=String.valueOf(Cinema.salas.get(i).checkCost());
                    boxPreco.setText(converted);
                    boxTipo.addItem(MESSAGE3D);
                }
            }
            for(int j=0;j<Cinema.salas.get(i).getSessoes().size();j++){
                if(Cinema.salas.get(i).getSessoes().get(j).getHorario().equals((tempSession))){
                    String convertedTicket=String.valueOf(Cinema.salas.get(i).getSessoes().get(j).getIngresso());
                    boxIngresso.setText(convertedTicket);
                    break;
                 }
            }
        }
}                                         

private void boxSalaActionPerformed(java.awt.event.ActionEvent evt) {                                        
    int selectedRoom=Integer.parseInt(boxFilme.getSelectedItem().toString());
    if(boxSala.getSelectedIndex()!=0){
        for(int i=0;i<Cinema.salas.size();i++){
           if(Cinema.salas.get(i).getId()==selectedRoom){
               for(int j=0;j<Cinema.salas.get(i).getSessoes().size();j++){
                   boxSessao.addItem(Cinema.salas.get(i).getSessoes().get(j).getHorario());
               }
           }
       }
    }
}

Edite seu post, indente o código, selecione ele e clique no botão de texto pré-formatado </>.
Do jeito que está é péssimo pra ler ou copiar e colar.

Corrigi

Então, se você utilizar adequadamente o ComboBoxModel para renderizar os itens dos seus JComboBoxes e tirar esse monte de inteligência da tela e deixar ela nas classes adequadas, tudo fica mais fácil de manter.

Não sei como está seu código completo, mas vamos supor que você tenha as classes Filme, Sala e Sessao parecidas com as classes abaixo.

Classe Filme:

public class Filme {

    private String nome;

    public Filme(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    @Override
    public int hashCode() {
        return nome == null ? 0 : nome.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Filme) {
            Filme that = (Filme) obj;
            if (this.nome == null) {
                return that.nome == null;
            }
            return this.nome.equals(that.nome);
        }
        return false;
    }
}

Classe Sala:

import java.util.LinkedList;
import java.util.List;

public class Sala {

    private String nome;
    private Filme filme;
    private List<Sessao> sessoes = new LinkedList<>();

    public Sala(String nome) {
        this.nome = nome;
    }

    public void addSessao(Sessao sessao) {
        sessoes.add(sessao);
    }

    public Filme getFilme() {
        return filme;
    }

    public String getNome() {
        return nome;
    }

    public List<Sessao> getSessoes() {
        return sessoes;
    }

    public void setFilme(Filme filme) {
        this.filme = filme;
    }

    @Override
    public int hashCode() {
        return nome == null ? 0 : nome.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Sala) {
            Sala that = (Sala) obj;
            if (this.nome == null) {
                return that.nome == null;
            }
            return this.nome.equals(that.nome);
        }
        return false;
    }
}

Classe Sessao:

public class Sessao {

    private String horario;

    public Sessao(String horario) {
        this.horario = horario;
    }

    public String getHorario() {
        return horario;
    }

    @Override
    public int hashCode() {
        return horario == null ? 0 : horario.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof Sessao) {
            Sessao that = (Sessao) obj;
            if (this.horario == null) {
                return that.horario == null;
            }
            return this.horario.equals(that.horario);
        }
        return false;
    }
}

E uma classe Cinema com funcionalidades parecidas com as da classe abaixo:

import java.util.LinkedList;
import java.util.List;

public class Cinema {

    // Exemplo hipotético de inicialização
    // No mundo real você vai ler isso de uma base de dados
    public static Cinema inicializar() {
        Sessao sessao1 = new Sessao("15:00");
        Sessao sessao2 = new Sessao("15:30");
        Sessao sessao3 = new Sessao("16:00");
        Sessao sessao4 = new Sessao("16:30");
        Sessao sessao5 = new Sessao("17:00");
        Sessao sessao6 = new Sessao("17:30");
        Sessao sessao7 = new Sessao("18:00");
        Sessao sessao8 = new Sessao("18:30");
        Sessao sessao9 = new Sessao("19:00");

        Filme filme1 = new Filme("Jon Wick 3");
        Filme filme2 = new Filme("Rambo V");
        Filme filme3 = new Filme("Vingadores Ultimato");

        Sala sala1 = new Sala("Sala 1");
        sala1.setFilme(filme1);
        sala1.addSessao(sessao1);
        sala1.addSessao(sessao3);
        sala1.addSessao(sessao5);
        sala1.addSessao(sessao7);
        sala1.addSessao(sessao9);

        Sala sala2 = new Sala("Sala 2");
        sala2.setFilme(filme2);
        sala2.addSessao(sessao2);
        sala2.addSessao(sessao4);
        sala2.addSessao(sessao5);
        sala2.addSessao(sessao6);
        sala2.addSessao(sessao8);

        Sala sala3 = new Sala("Sala 3");
        sala3.setFilme(filme3);
        sala3.addSessao(sessao2);
        sala3.addSessao(sessao3);
        sala3.addSessao(sessao4);
        sala3.addSessao(sessao5);
        sala3.addSessao(sessao7);

        Sala sala4 = new Sala("Sala 4");
        sala4.setFilme(filme2);
        sala4.addSessao(sessao3);
        sala4.addSessao(sessao4);
        sala4.addSessao(sessao6);
        sala4.addSessao(sessao7);
        sala4.addSessao(sessao9);

        Sala sala5 = new Sala("Sala 5");
        sala5.setFilme(filme1);
        sala5.addSessao(sessao1);
        sala5.addSessao(sessao2);
        sala5.addSessao(sessao5);
        sala5.addSessao(sessao8);
        sala5.addSessao(sessao9);

        Cinema cinema = new Cinema();

        cinema.addSala(sala1);
        cinema.addSala(sala2);
        cinema.addSala(sala3);
        cinema.addSala(sala4);
        cinema.addSala(sala5);

        return cinema;
    }

    private List<Sala> salas = new LinkedList<>();

    private Cinema() {}

    public void addSala(Sala sala) {
        salas.add(sala);
    }

    public List<Filme> getFilmes() {
        List<Filme> todosOsFilmes = new LinkedList<>();
        for (Sala sala : salas) {
            Filme filme = sala.getFilme();
            if (todosOsFilmes.contains(filme)) {
                continue;
            }
            todosOsFilmes.add(filme);
        }
        return todosOsFilmes;
    }

    public List<Sala> getSalas() {
        return salas;
    }

    public List<Sala> pesquisarSalaPorFilme(String nomeDoFilme) {
        List<Sala> encontradas = new LinkedList<>();
        for (Sala sala : salas) {
            if (encontradas.contains(sala)) {
                continue;
            }
            Filme filme = sala.getFilme();
            if (nomeDoFilme.equals(filme.getNome())) {
                encontradas.add(sala);
            }
        }
        return encontradas;
    }

    public List<Sessao> pesquisarSessaoPorSala(String nomeDaSala) {
        for (Sala sala : salas) {
            if (nomeDaSala.equals(sala.getNome())) {
                return sala.getSessoes();
            }
        }
        return new LinkedList<>();
    }
}

Agora, com todas as estruturas básicas preparadas, fica bem mais fácil implementar a sua tela.

Veja o exemplo abaixo:

import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.List;

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

@SuppressWarnings("serial")
public class TelaExemplo extends JFrame {

    /**
     * Ponto de entrada do programa
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            TelaExemplo tela = new TelaExemplo();
            tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
            tela.setLocationRelativeTo(null);
            tela.setVisible(true);
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    /**
     * ComboBoxModel interno utilizado para renderizar a coleção de filmes
     */
    private class ComboBoxModelFilme extends DefaultComboBoxModel<String> {

        private List<Filme> filmes;

        ComboBoxModelFilme(List<Filme> filmes) {
            this.filmes = filmes;
        }

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

        @Override
        public String getElementAt(int index) {
            Filme filme = filmes.get(index);
            return filme.getNome();
        }
    }

    /**
     * ComboBoxModel interno utilizado para renderizar a coleção de salas
     */
    private class ComboBoxModelSala extends DefaultComboBoxModel<String> {

        private List<Sala> salas;

        ComboBoxModelSala(List<Sala> salas) {
            this.salas = salas;
        }

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

        @Override
        public String getElementAt(int index) {
            Sala sala = salas.get(index);
            return sala.getNome();
        }
    }

    /**
     * ComboBoxModel interno utilizado para renderizar a coleção de sessões
     */
    private class ComboBoxModelSessao extends DefaultComboBoxModel<String> {

        private List<Sessao> sessoes;

        ComboBoxModelSessao(List<Sessao> sessoes) {
            this.sessoes = sessoes;
        }

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

        @Override
        public String getElementAt(int index) {
            Sessao sessao = sessoes.get(index);
            return sessao.getHorario();
        }
    }

    private final Cinema cinema;

    private JComboBox<String> boxFilme;
    private JComboBox<String> boxSala;
    private JComboBox<String> boxSessao;

    /**
     * Construtor da tela
     */
    public TelaExemplo() {
        super("Tela de Exemplo");
        Dimension tamanho = new Dimension(640, 480);
        setMinimumSize(tamanho);

        boxFilme = new JComboBox<>();
        boxFilme.setPreferredSize(new Dimension(150, 30));
        boxFilme.addActionListener(event -> atualizaComboSala());

        boxSala = new JComboBox<>();
        boxSala.setPreferredSize(new Dimension(100, 30));
        boxSala.addActionListener(event -> atualizaComboSessao());

        boxSessao = new JComboBox<>();
        boxSessao.setPreferredSize(new Dimension(80, 30));

        Container container = getContentPane();
        container.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
        container.add(boxFilme);
        container.add(boxSala);
        container.add(boxSessao);

        cinema= Cinema.inicializar();
        atualizaComboFilme();
    }

    private void atualizaComboFilme() {
        List<Filme> filmes = cinema.getFilmes();
        boxFilme.setModel(new ComboBoxModelFilme(filmes));
        boxFilme.setSelectedIndex(0);
        atualizaComboSala();
    }

    private void atualizaComboSala() {
        String nomeDoFilme = (String) boxFilme.getSelectedItem();
        List<Sala> salas = cinema.pesquisarSalaPorFilme(nomeDoFilme);
        boxSala.setModel(new ComboBoxModelSala(salas));
        boxSala.setSelectedIndex(0);
        atualizaComboSessao();
    }

    private void atualizaComboSessao() {
        String nomeDaSala = (String) boxSala.getSelectedItem();
        List<Sessao> sessoes = cinema.pesquisarSessaoPorSala(nomeDaSala);
        boxSessao.setModel(new ComboBoxModelSessao(sessoes));
        boxSessao.setSelectedIndex(0);
    }
}