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;
}
}