JComboBox não abre a lista de itens

0 respostas
tebosoftware

Boa tarde pessoal,

estava estudando uns exercícios com layouts e me deparei com uma coisa estranha, os 2 jcombobox que coloquei na tela não abre a lista de itens quando estão gerenciados no gridbaglayout. Alguem poderia me explicar onde estou errando?

package swing_testes.testes;

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

/**
 *
 * @author Tebo Software - Shubacca
 * @date 16/05/2009
 */
public class ReservasAereas extends JFrame {

    public ReservasAereas() {
        setTitle("Reservas Aéreas");
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                if (JOptionPane.showConfirmDialog(rootPane, "Fechar Janela?", "Atenção", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
                    System.exit(0);
                }
            }
        });

        //Dados da Reserva
        DefaultComboBoxModel dcbmDestinos = new DefaultComboBoxModel(new String[]{"Franca", "Ribeirão Preto", "São Paulo"});
        JPanel pnlReserva = new JPanel(new GridBagLayout());
        JLabel lblData = new JLabel("Data:");
        JTextField tfdData = new JTextField();
        JLabel lblDe = new JLabel("De:");
        final JComboBox cbxDe = new JComboBox();
        cbxDe.setModel(dcbmDestinos);
        JLabel lblAte = new JLabel("Até:");
        JComboBox cbxAte = new JComboBox();
        cbxAte.setModel(dcbmDestinos);
        JPanel pnlOpcoes = new JPanel(new GridLayout(3, 1));
        pnlOpcoes.setBorder(BorderFactory.createTitledBorder("Classe"));
        ButtonGroup bg = new ButtonGroup();
        JRadioButton rbtPrimeiraClasse = new JRadioButton("1ª Classe", true);
        JRadioButton rbtSegundaClasse = new JRadioButton("2ª Classe");
        JRadioButton rbtTerceiraClasse = new JRadioButton("3ª Classe");
        bg.add(rbtPrimeiraClasse);
        bg.add(rbtSegundaClasse);
        bg.add(rbtTerceiraClasse);
        pnlOpcoes.add(rbtPrimeiraClasse);
        pnlOpcoes.add(rbtSegundaClasse);
        pnlOpcoes.add(rbtTerceiraClasse);
        
        GridBagConstraints con = new GridBagConstraints();
        con.insets = new Insets(2, 2, 2, 2);

        pnlReserva.add(lblData, con);
        con.gridy = 1;
        pnlReserva.add(lblDe, con);
        con.gridy = 2;
        pnlReserva.add(lblAte, con);

        con.anchor = GridBagConstraints.CENTER;
        con.gridx = 1;
        con.gridy = 0;
        con.weightx = 1;
        con.fill = GridBagConstraints.HORIZONTAL;
        pnlReserva.add(tfdData, con);
        con.gridy = 1;
        pnlReserva.add(cbxDe, con);
        con.gridy = 2;
        pnlReserva.add(cbxAte, con);
        con.gridx = 2;
        con.gridy = 0;
        con.gridheight = 3;
        con.weightx = 0;
        con.fill = GridBagConstraints.NONE;
        pnlReserva.add(pnlOpcoes, con);

        JPanel pnlVoos = new JPanel(new BorderLayout());
        pnlVoos.setBorder(BorderFactory.createTitledBorder("Voos Disponíveis"));
        JList lstVoos = new JList(dcbmDestinos);
        JScrollPane srpVoos = new JScrollPane(lstVoos);
        pnlVoos.add(srpVoos, BorderLayout.CENTER);

        JPanel pnlBotoes = new JPanel();
        JButton btnBuscar = new JButton("Buscar");
        btnBuscar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                cbxDe.showPopup();
                JOptionPane.showMessageDialog(rootPane, cbxDe.getModel().getSize());
            }
        });
        JButton btnComprar = new JButton("Comprar");
        JButton btnFechar = new JButton("Fechar");
        pnlBotoes.add(btnBuscar);
        pnlBotoes.add(btnComprar);
        pnlBotoes.add(btnFechar);

        getRootPane().setLayout(new BorderLayout());
        getRootPane().add(pnlReserva, BorderLayout.NORTH);
        getRootPane().add(pnlVoos, BorderLayout.CENTER);
        getRootPane().add(pnlBotoes, BorderLayout.SOUTH);
        pack();
        setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - getWidth()) / 2 ,
                (Toolkit.getDefaultToolkit().getScreenSize().height - getHeight()) / 2);
        setVisible(true);
    }

    public static void main(String[] args) {
        
        new ReservasAereas();
        JFrame j = new JFrame("Teste");
        j.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        j.add(new JComboBox(new String[]{"Teste1", "Teste2", "Teste3", "Teste4"}));
        j.pack();
        j.setVisible(true);
    }
}

desde já agradçeo

Criado 17 de maio de 2009
Respostas 0
Participantes 1