Refresh ComboBox that receives a list from another panel

3

I have a screen where I register a movie, and I play for a ArrayList with a Movie class, which contains some attributes such as title, year, nothing else so far.

So I want it on my other screen where I have a comboBox called "Select Movie", it is possible to select all registered movies, but what happens is that this comboBox does not update, as it has been set when starting the program it stay.

I saw some things in forums about the "revalidate ()" and "replace" methods, but it did not work.

In the question of the table is the same thing, list added movies on another screen.

Here is the complete code with the basic functionalities to test:

Screen = windows application

package tela;

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.CardLayout;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.Color;
import javax.swing.JTextPane;
import java.awt.Cursor;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;

public class Exemplo {

private JFrame frmHappyCine;
private JPanel t2_menuInicial;
private JPanel t4_realizarVendas;
@SuppressWarnings({ "rawtypes", "unused" })
private JComboBox comboBox;
private JButton btnVoltarMenu;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Exemplo window = new Exemplo();
                window.frmHappyCine.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Exemplo() {
    initialize();
}

String pass = "Palmeirense";
String name = "Tiago Saldanha";
private JComboBox comboBoxSelecionarFilme;
private JButton btnVendas;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JPanel t5_cadastroFilme;
private JTextField textNomeFilme;
private JTextPane textFieldDescricao;
private JTextField textFieldAno;
private JComboBox comboFaixaEtaria;
private JTextPane textFieldAtores;
private JTextField textFieldDuracao;

/**
 * Initialize the contents of the frame.
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
private void initialize() { 

    Filme filme = new Filme();

    ArrayList<Filme> filmeArray = new ArrayList<Filme>();


    frmHappyCine = new JFrame();
    frmHappyCine.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    frmHappyCine.setTitle("Happy Cine");
    frmHappyCine.getContentPane().setBackground(new Color(255, 255, 255));
    frmHappyCine.setBounds(350, 100, 700, 600);
    frmHappyCine.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmHappyCine.getContentPane().setLayout(new CardLayout(0, 0));

    t2_menuInicial = new JPanel();
    frmHappyCine.getContentPane().add(t2_menuInicial, "name_813525675668965");
    t2_menuInicial.setLayout(null);

    JLabel lblmenuInicial = new JLabel("Menu inicial");
    lblmenuInicial.setFont(new Font("Tahoma", Font.PLAIN, 18));
    lblmenuInicial.setBounds(288, 146, 108, 14);
    t2_menuInicial.add(lblmenuInicial);

    btnVendas = new JButton("Realizar Vendas");
    btnVendas.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            t2_menuInicial.setVisible(false);
            t4_realizarVendas.setVisible(true);
        }
    });
    btnVendas.setBounds(235, 199, 213, 23);
    t2_menuInicial.add(btnVendas);

    JButton btnNewButton = new JButton("Cadastrar Filme");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            t2_menuInicial.setVisible(false);
            t5_cadastroFilme.setVisible(true);
        }
    });
    btnNewButton.setBounds(235, 243, 213, 23);
    t2_menuInicial.add(btnNewButton);

    t4_realizarVendas = new JPanel();
    t4_realizarVendas.repaint();
    frmHappyCine.getContentPane().add(t4_realizarVendas, "name_1417798624613276");
    t4_realizarVendas.setLayout(null);

    JLabel lblVendas = new JLabel("Venda de Ingressos");
    lblVendas.setFont(new Font("Tahoma", Font.PLAIN, 18));
    lblVendas.setBounds(259, 11, 165, 23);
    t4_realizarVendas.add(lblVendas);

    JLabel lblTituloDoFilme = new JLabel("T\u00EDtulo do Filme");
    lblTituloDoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblTituloDoFilme.setBounds(21, 105, 159, 23);
    t4_realizarVendas.add(lblTituloDoFilme);

    btnVoltarMenu = new JButton("Voltar");
    btnVoltarMenu.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent a) {
            t4_realizarVendas.setVisible(false);
            t2_menuInicial.setVisible(true);
        }
    });
    btnVoltarMenu.setForeground(Color.RED);
    btnVoltarMenu.setBounds(585, 527, 89, 23);
    t4_realizarVendas.add(btnVoltarMenu);

    comboBoxSelecionarFilme = new JComboBox();
    comboBoxSelecionarFilme.setToolTipText("Selecione o filme");
    comboBoxSelecionarFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));


    String[] stringFilme = new String[filmeArray.size()];
    filmeArray.toArray(stringFilme);
    for (int i = 0; i < filmeArray.size(); i++) {
        stringFilme[i] = filmeArray.get(i).getTitulo();
        System.out.println(filmeArray.get(i).getTitulo());
    }

    comboBoxSelecionarFilme.setModel(new DefaultComboBoxModel(stringFilme));
    comboBoxSelecionarFilme.setBounds(205, 105, 436, 23);
    t4_realizarVendas.add(comboBoxSelecionarFilme);

    t5_cadastroFilme = new JPanel();
    frmHappyCine.getContentPane().add(t5_cadastroFilme, "name_813525692590336");
    t5_cadastroFilme.setLayout(null);

    JLabel nomeMenuCadastro = new JLabel("Cadastro de Filme");
    nomeMenuCadastro.setFont(new Font("Tahoma", Font.PLAIN, 18));
    nomeMenuCadastro.setBounds(267, 11, 150, 23);
    t5_cadastroFilme.add(nomeMenuCadastro);

    textNomeFilme = new JTextField();
    textNomeFilme.setBounds(48, 140, 319, 23);
    t5_cadastroFilme.add(textNomeFilme);
    textNomeFilme.setColumns(10);

    JLabel nomeFilme = new JLabel("Titulo");
    nomeFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
    nomeFilme.setBounds(48, 115, 319, 14);
    t5_cadastroFilme.add(nomeFilme);

    JLabel generoFilme = new JLabel("Descri\u00E7\u00E3o");
    generoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
    generoFilme.setBounds(48, 174, 319, 14);
    t5_cadastroFilme.add(generoFilme);

    JLabel anoFilme = new JLabel("Ano");
    anoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
    anoFilme.setBounds(413, 115, 86, 14);
    t5_cadastroFilme.add(anoFilme);

    textFieldAno = new JTextField();
    textFieldAno.setColumns(10);
    textFieldAno.setBounds(413, 140, 86, 23);
    t5_cadastroFilme.add(textFieldAno);

    JLabel ator_principalFilme = new JLabel("Atores Principais");
    ator_principalFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
    ator_principalFilme.setBounds(48, 308, 319, 14);
    t5_cadastroFilme.add(ator_principalFilme);


    JButton btnSalvarFilme = new JButton("Salvar");
    btnSalvarFilme.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            String retorno = "";
            if (textNomeFilme.getText().equals(""))
            {
                retorno += "\n Informe um nome para o filme.";
            }
            if (textFieldAno.getText().equals(""))
            {
                retorno +=  "\n Informe um ano para o filme.";
            }
            if (textFieldDescricao.getText().equals(""))
            {
                retorno += "\n Informe uma descrição para o filme.";
            }
            if (textFieldAtores.getText().equals(""))
            {
                retorno += "\n Informe atores principais para o filme.";
            }
            if (textFieldDuracao.getText().equals(""))
            {
                retorno += "\n Informe uma duração em minutos para o filme.";
            }

            if (retorno != "")
            {
                JOptionPane.showMessageDialog(null, retorno);
            }
            else
            {
                filme.setTitulo(textNomeFilme.getText());
                filme.setAno(textFieldAno.getText());
                filme.setDescricao(textFieldDescricao.getText());
                filme.setFaixaEtaria(comboFaixaEtaria.getSelectedItem().toString());
                filme.setAtoresPrincipais(textFieldAtores.getText());

                try{
                    filme.setDuracaoMinutos(Double.parseDouble(textFieldDuracao.getText()));
                }catch(Exception descricao){
                    String msg = "A duração em minutos do filme não pode conter letras ou caracters especiais!"; 
                    JOptionPane.showMessageDialog(btnSalvarFilme, msg);
                }

                filmeArray.add(filme);
                JOptionPane.showMessageDialog(null, "Filme salvo com sucesso!");
                textNomeFilme.setText(null);
                textFieldAno.setText(null);
                textFieldDescricao.setText(null);
                textFieldAtores.setText(null);
                textFieldDuracao.setText(null);
            }
        }
    });

    btnSalvarFilme.setForeground(new Color(0, 102, 0));
    btnSalvarFilme.setBounds(585, 11, 89, 23);
    t5_cadastroFilme.add(btnSalvarFilme);

    JLabel lblNewLabel = new JLabel("Para cadastrar atores insira uma v\u00EDrgula entre cada nome.");
    lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 11));
    lblNewLabel.setForeground(new Color(255, 0, 0));
    lblNewLabel.setBounds(48, 398, 369, 14);
    t5_cadastroFilme.add(lblNewLabel);

    JLabel lblFaixa = new JLabel("Faixa et\u00E1ria");
    lblFaixa.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblFaixa.setBounds(413, 176, 86, 14);
    t5_cadastroFilme.add(lblFaixa);

    JLabel lblDuraoEmMinutos = new JLabel("Dura\u00E7\u00E3o em minutos");
    lblDuraoEmMinutos.setFont(new Font("Tahoma", Font.PLAIN, 14));
    lblDuraoEmMinutos.setBounds(413, 304, 143, 23);
    t5_cadastroFilme.add(lblDuraoEmMinutos);

    textFieldDuracao = new JTextField();
    textFieldDuracao.setColumns(10);
    textFieldDuracao.setBounds(413, 333, 86, 23);
    t5_cadastroFilme.add(textFieldDuracao);

    JButton btnVoltar_1 = new JButton("Voltar");
    btnVoltar_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            t5_cadastroFilme.setVisible(false);
            t2_menuInicial.setVisible(true);
        }
    });
    btnVoltar_1.setForeground(Color.BLACK);
    btnVoltar_1.setBounds(585, 527, 89, 23);
    t5_cadastroFilme.add(btnVoltar_1);

    textFieldDescricao = new JTextPane();
    textFieldDescricao.setBounds(48, 199, 319, 98);
    t5_cadastroFilme.add(textFieldDescricao);

    textFieldAtores = new JTextPane();
    textFieldAtores.setBounds(48, 333, 319, 54);
    t5_cadastroFilme.add(textFieldAtores);

    comboFaixaEtaria = new JComboBox();
    comboFaixaEtaria.setModel(new DefaultComboBoxModel(new String[] {"Selecione", "12", "14", "16", "18"}));
    comboFaixaEtaria.setSelectedIndex(0);
    comboFaixaEtaria.setBounds(413, 202, 86, 20);
    t5_cadastroFilme.add(comboFaixaEtaria);

    JComboBox comboBoxFaixa = new JComboBox();
    comboBoxFaixa.setModel(new DefaultComboBoxModel(new String[] {"Selecione", "Livre", "12 Anos", "14 Anos", "16 Anos", "18 Anos"}));
    comboBoxFaixa.setSelectedIndex(0);
    comboBoxFaixa.setBounds(413, 201, 86, 20);
    t5_cadastroFilme.add(comboBoxFaixa);

    }
}

Movie Class:

package tela;

public class Filme {

private String titulo;
private String ano;
private String descricao;
private String faixaEtaria;
private String atoresPrincipais;
private double duracaoMinutos;


public String getTitulo() {
    return titulo;
}
public void setTitulo(String titulo) {
    this.titulo = titulo;
}
public String getAno() {
    return ano;
}
public void setAno(String ano) {
    this.ano = ano;
}
public String getDescricao() {
    return descricao;
}
public void setDescricao(String descricao) {
    this.descricao = descricao;
}
public String getFaixaEtaria() {
    return faixaEtaria;
}
public void setFaixaEtaria(String faixaEtaria) {
    this.faixaEtaria = faixaEtaria;
}
public String getAtoresPrincipais() {
    return atoresPrincipais;
}
public void setAtoresPrincipais(String atoresPrincipais) {
    this.atoresPrincipais = atoresPrincipais;
}
public double getDuracaoMinutos() {
    return duracaoMinutos;
}
public void setDuracaoMinutos(double duracaoMinutos) {
    this.duracaoMinutos = duracaoMinutos;
}


}
    
asked by anonymous 03.12.2016 / 23:12

2 answers

3

As the code was, it would be complicated to adapt. I separated the panels into different classes and to solve the combo problem without changing the structure of your code, I implemented a listener in the Panel where the combo was, so it will be invoked whenever the panel is configured as visible (via the setVisible() method) and will update the combo model with the list again, due to a particularity in behavior of ArrayList , when passed as parameter of the main class for the other panel classes.

The code looks like this:

Class Example is now cleaner:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;

public class Exemplo {

    private JFrame frmHappyCine;
    private JPanel t2_menuInicial;
    @SuppressWarnings({"rawtypes", "unused"})

    String pass = "Palmeirense";
    String name = "Tiago Saldanha";
    private JComboBox comboBox;
    private JButton btnVendas;
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    //transformei a lista em atributo para poder usá-la
    //como parametro dos paineis        
    private ArrayList<Filme> filmeArray = new ArrayList<>();
    //criei dois atributos para representar os paineis
    private CadastroFilmePainel filmePanel;
    private RealizarVendasPainel vendasPanel;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    Exemplo window = new Exemplo();
                    window.frmHappyCine.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Exemplo() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    private void initialize() {

        frmHappyCine = new JFrame();
        frmHappyCine.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        frmHappyCine.setTitle("Happy Cine");
        frmHappyCine.getContentPane().setBackground(new Color(255, 255, 255));
        frmHappyCine.setBounds(350, 100, 700, 600);
        frmHappyCine.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmHappyCine.getContentPane().setLayout(new CardLayout(0, 0));

        t2_menuInicial = new JPanel();
        frmHappyCine.getContentPane().add(t2_menuInicial, "name_813525675668965");
        t2_menuInicial.setLayout(null);

        JLabel lblmenuInicial = new JLabel("Menu inicial");
        lblmenuInicial.setFont(new Font("Tahoma", Font.PLAIN, 18));
        lblmenuInicial.setBounds(288, 146, 108, 14);
        t2_menuInicial.add(lblmenuInicial);

        btnVendas = new JButton("Realizar Vendas");
        btnVendas.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                t2_menuInicial.setVisible(false);
                //vendasPanel é uma instancia do painel de realizar vendas
                vendasPanel.revalidate();
                vendasPanel.setVisible(true);
            }
        });
        btnVendas.setBounds(235, 199, 213, 23);
        t2_menuInicial.add(btnVendas);

        JButton btnNewButton = new JButton("Cadastrar Filme");
        btnNewButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                t2_menuInicial.setVisible(false);
                //filmePanel é uma instancia do painel de cadastrar filmes
                filmePanel.setVisible(true);
            }
        });
        btnNewButton.setBounds(235, 243, 213, 23);
        t2_menuInicial.add(btnNewButton);
        //adiciona o painel de vendas a tela principal
        vendasPanel = new RealizarVendasPainel(filmeArray);
        frmHappyCine.getContentPane().add(vendasPanel, "name_1417798624613276");
        //adiciona o painel de filmes a tela principal
        filmePanel = new CadastroFilmePainel(filmeArray);
        frmHappyCine.getContentPane().add(filmePanel, "name_813525692590336");

    }
}

Thanks to the separations that I mentioned in the comments, we now have two new classes for each specific panel of the program:

Replace Sales panel (where JComboBox is):

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;

public class RealizarVendasPainel extends JPanel {

    private JButton btnVoltarMenu;
    private JComboBox comboBoxSelecionarFilme;
    ArrayList<Filme> filmeArray;

    public RealizarVendasPainel(ArrayList listaFilmes) {
        //recebe a lista de filmes da tela principal
        this.filmeArray = listaFilmes;
        initComponents();
        //adiciona um listener para monitorar 
        //quando o painel for setado como visivel
        //e atualizar o combo de filmes
        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentShown(ComponentEvent e) {
                super.componentShown(e);
                //atualiza o combo de filmes
                comboBoxSelecionarFilme.setModel(new DefaultComboBoxModel(getListModel()));
            }

        });
    }

    private void initComponents() {

        this.setLayout(null);

        JLabel lblVendas = new JLabel("Venda de Ingressos");
        lblVendas.setFont(new Font("Tahoma", Font.PLAIN, 18));
        lblVendas.setBounds(259, 11, 165, 23);
        this.add(lblVendas);

        JLabel lblTituloDoFilme = new JLabel("T\u00EDtulo do Filme");
        lblTituloDoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
        lblTituloDoFilme.setBounds(21, 105, 159, 23);
        this.add(lblTituloDoFilme);

        btnVoltarMenu = new JButton("Voltar");
        btnVoltarMenu.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent a) {
                setVisible(false);
            }
        });
        btnVoltarMenu.setForeground(Color.RED);
        btnVoltarMenu.setBounds(585, 527, 89, 23);
        this.add(btnVoltarMenu);

        comboBoxSelecionarFilme = new JComboBox();
        comboBoxSelecionarFilme.setToolTipText("Selecione o filme");
        comboBoxSelecionarFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));

        comboBoxSelecionarFilme.setBounds(205, 105, 436, 23);
        comboBoxSelecionarFilme.setModel(new DefaultComboBoxModel(getListModel()));
        this.add(comboBoxSelecionarFilme);
    }

    /**
     * Método que irá converter o arraylist de filmes
     * em um vetor de strings
     * 
     * @return vetor de strings com o nome dos filmes
     */
    private String[] getListModel() {
        String[] stringFilme = new String[filmeArray.size()];

        for (int i = 0; i < filmeArray.size(); i++) {
            stringFilme[i] = filmeArray.get(i).getTitulo();
            System.out.println(filmeArray.get(i).getTitulo());
        }
        return stringFilme;
    }
}

Movie Registration Panel:

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;

public class CadastroFilmePainel extends JPanel {

    private JTextField textNomeFilme;
    private JTextField textFieldAno;
    private JTextPane textFieldDescricao;
    private JTextPane textFieldAtores;
    private JTextField textFieldDuracao;
    private JComboBox comboFaixaEtaria;
    private Filme filme;
    ArrayList<Filme> filmeArray;

    public CadastroFilmePainel(ArrayList<Filme> listaFilmes) {
        //recebe a lista de filmes do Frame
        this.filmeArray = listaFilmes;
        initComponents();
    }

    private void initComponents() {

        this.setLayout(null);

        JLabel nomeMenuCadastro = new JLabel("Cadastro de Filme");
        nomeMenuCadastro.setFont(new Font("Tahoma", Font.PLAIN, 18));
        nomeMenuCadastro.setBounds(267, 11, 150, 23);
        this.add(nomeMenuCadastro);

        textNomeFilme = new JTextField();
        textNomeFilme.setBounds(48, 140, 319, 23);
        this.add(textNomeFilme);
        textNomeFilme.setColumns(10);

        JLabel nomeFilme = new JLabel("Titulo");
        nomeFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
        nomeFilme.setBounds(48, 115, 319, 14);
        this.add(nomeFilme);

        JLabel generoFilme = new JLabel("Descri\u00E7\u00E3o");
        generoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
        generoFilme.setBounds(48, 174, 319, 14);
        this.add(generoFilme);

        JLabel anoFilme = new JLabel("Ano");
        anoFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
        anoFilme.setBounds(413, 115, 86, 14);
        this.add(anoFilme);

        textFieldAno = new JTextField();
        textFieldAno.setColumns(10);
        textFieldAno.setBounds(413, 140, 86, 23);
        this.add(textFieldAno);

        JLabel ator_principalFilme = new JLabel("Atores Principais");
        ator_principalFilme.setFont(new Font("Tahoma", Font.PLAIN, 14));
        ator_principalFilme.setBounds(48, 308, 319, 14);
        this.add(ator_principalFilme);

        JButton btnSalvarFilme = new JButton("Salvar");
        btnSalvarFilme.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String retorno = "";
                if (textNomeFilme.getText().equals("")) {
                    retorno += "\n Informe um nome para o filme.";
                } else if (textFieldAno.getText().equals("")) {
                    retorno += "\n Informe um ano para o filme.";
                } else if (textFieldDescricao.getText().equals("")) {
                    retorno += "\n Informe uma descrição para o filme.";
                } else if (textFieldAtores.getText().equals("")) {
                    retorno += "\n Informe atores principais para o filme.";
                } else if (textFieldDuracao.getText().equals("")) {
                    retorno += "\n Informe uma duração em minutos para o filme.";
                }

                if (!"".equals(retorno)) {
                    JOptionPane.showMessageDialog(null, retorno);
                } else {
                    filme = new Filme();
                    filme.setTitulo(textNomeFilme.getText());
                    filme.setAno(textFieldAno.getText());
                    filme.setDescricao(textFieldDescricao.getText());
                    filme.setFaixaEtaria(comboFaixaEtaria.getSelectedItem().toString());
                    filme.setAtoresPrincipais(textFieldAtores.getText());

                    try {
                        filme.setDuracaoMinutos(Double.parseDouble(textFieldDuracao.getText()));
                    } catch (Exception descricao) {
                        String msg = "A duração em minutos do filme não pode conter letras ou caracters especiais!";
                        JOptionPane.showMessageDialog(btnSalvarFilme, msg);
                    }

                    filmeArray.add(filme);
                    JOptionPane.showMessageDialog(null, "Filme salvo com sucesso!");
                    textNomeFilme.setText(null);
                    textFieldAno.setText(null);
                    textFieldDescricao.setText(null);
                    textFieldAtores.setText(null);
                    textFieldDuracao.setText(null);
                }
            }
        });

        btnSalvarFilme.setForeground(new Color(0, 102, 0));
        btnSalvarFilme.setBounds(585, 11, 89, 23);
        this.add(btnSalvarFilme);

        JLabel lblNewLabel = new JLabel("Para cadastrar atores insira uma v\u00EDrgula entre cada nome.");
        lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lblNewLabel.setForeground(new Color(255, 0, 0));
        lblNewLabel.setBounds(48, 398, 369, 14);
        this.add(lblNewLabel);

        JLabel lblFaixa = new JLabel("Faixa et\u00E1ria");
        lblFaixa.setFont(new Font("Tahoma", Font.PLAIN, 14));
        lblFaixa.setBounds(413, 176, 86, 14);
        this.add(lblFaixa);

        JLabel lblDuraoEmMinutos = new JLabel("Dura\u00E7\u00E3o em minutos");
        lblDuraoEmMinutos.setFont(new Font("Tahoma", Font.PLAIN, 14));
        lblDuraoEmMinutos.setBounds(413, 304, 143, 23);
        this.add(lblDuraoEmMinutos);

        textFieldDuracao = new JTextField();
        textFieldDuracao.setColumns(10);
        textFieldDuracao.setBounds(413, 333, 86, 23);
        this.add(textFieldDuracao);

        JButton btnVoltar_1 = new JButton("Voltar");
        btnVoltar_1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                setVisible(false);
            }
        });
        btnVoltar_1.setForeground(Color.BLACK);
        btnVoltar_1.setBounds(585, 527, 89, 23);
        this.add(btnVoltar_1);

        textFieldDescricao = new JTextPane();
        textFieldDescricao.setBounds(48, 199, 319, 98);
        this.add(textFieldDescricao);

        textFieldAtores = new JTextPane();
        textFieldAtores.setBounds(48, 333, 319, 54);
        this.add(textFieldAtores);

        comboFaixaEtaria = new JComboBox();
        comboFaixaEtaria.setModel(new DefaultComboBoxModel(new String[]{"Selecione", "12", "14", "16", "18"}));
        comboFaixaEtaria.setSelectedIndex(0);
        comboFaixaEtaria.setBounds(413, 202, 86, 20);
        this.add(comboFaixaEtaria);

        JComboBox comboBoxFaixa = new JComboBox();
        comboBoxFaixa.setModel(new DefaultComboBoxModel(new String[]{"Selecione", "Livre", "12 Anos", "14 Anos", "16 Anos", "18 Anos"}));
        comboBoxFaixa.setSelectedIndex(0);
        comboBoxFaixa.setBounds(413, 201, 86, 20);
        this.add(comboBoxFaixa);

    }

}

The result:

Ihadnotnoticedaslightproblemwiththeoldcombo,whichremainsthelastvalueselectedinthepreviousregister.Ifyouwanttofixthisbehavior,justaddcomboFaixaEtaria.setSelectedIndex(0);attheendoftheactionPerformedofthesavemoviebutton,becausesincetheliststartswithatooltip"Select" , the "reset" of that component could simply be to set the first item as selected.

textNomeFilme.setText(null);
textFieldAno.setText(null);
textFieldDescricao.setText(null);
textFieldAtores.setText(null);
textFieldDuracao.setText(null);
comboFaixaEtaria.setSelectedIndex(0);
    
04.12.2016 / 16:13
-1

In the comboBox, the line you need to pay attention to is the following:

comboBoxSelecionarFilme.setModel(new DefaultComboBoxModel(stringFilme));

In it you pass the string with the movies to the comboBox and only do this once. If you need this list to update, you need to update the stringFilm and load the comboBox again with updated stringFilme. I recommend that you create a function that groups all these operations:

1- reload an updated list with the movieArray;

2 - reload the stringFilme from the movieArray;

3 - Reload the comboBoxSelectFile. In this case, just copy the line above.

Then just use each change.

    
04.12.2016 / 01:56