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