Classe ComboBoxDinamica

Propaganda
package pontujar.combobox.dinamica;
import
import
import
import
import
java.awt.Font;
java.awt.Rectangle;
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
java.util.ArrayList;
import
import
import
import
import
import
import
javax.swing.AbstractListModel;
javax.swing.ComboBoxModel;
javax.swing.JComboBox;
javax.swing.JFrame;
javax.swing.JLabel;
javax.swing.JPanel;
javax.swing.SwingUtilities;
/**
* Classe responável por criar ComboBox dinâmica.
* @author Gabriel
* @since 19/10/2010
* @version 1.0
*/
public class ComboBoxDinamica extends JFrame {
private static final long serialVersionUID = 1L;
private
private
private
private
private
JPanel jContentPane = null;
JComboBox cBoxPaises = null;
JComboBox cBoxEstados = null;
JLabel lblPaises = null;
JLabel lblEstados = null;
/**
* This method initializes lblEstados
* @return javax.swing.JLabel
*/
public JLabel getLblEstados() {
if(lblEstados == null){
lblEstados = new JLabel();
lblEstados.setBounds(new Rectangle(10, 40, 50, 20));
lblEstados.setFont(new Font("Verdana", Font.BOLD, 12));
lblEstados.setText("Estado");
}
return lblEstados;
}
/**
* This method initializes lblPaises
* @return javax.swing.JLabel
*/
public JLabel getLblPaises() {
if(lblPaises == null){
lblPaises = new JLabel();
lblPaises.setBounds(new Rectangle(10, 10, 50, 20));
lblPaises.setFont(new Font("Verdana", Font.BOLD, 12));
lblPaises.setText("País");
}
return lblPaises;
}
/**
* This method initializes cBoxPaises
* @return javax.swing.JComboBox
*/
private JComboBox getCBoxPaises() {
if (cBoxPaises == null) {
// Passa no construtor da ComboBox de Paises a chamada do método que retorna todos
// os Paises cadastrados.
// (Base de Dados simulada pela Classe SimuladorBancoDados)
cBoxPaises = new JComboBox(SimuladorBancoDados.consultarTodosPaises().toArray());
cBoxPaises.setBounds(new Rectangle(62, 10, 160, 20));
cBoxPaises.setFont(new Font("Verdana", Font.PLAIN, 12));
cBoxPaises.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
// Preenche a comboBox de Estado ao selecionar algum item.
preencherComboBoxEstados((String)getCBoxPaises().getSelectedItem());
}
});
// Preenche a comboBox de Estado ao abrir a tela.
// Só será executado no momento da inicial.
preencherComboBoxEstados((String)getCBoxPaises().getSelectedItem());
}
return cBoxPaises;
}
/**
* Método responsável por preencher dinamicamente a comboBox de Estado
* com base no país informado.
* @param String nomePais - País selecionado.
*/
private void preencherComboBoxEstados(String nomePais){
//Pega o Model da comboBox de Estados
ModeloComboBox model = (ModeloComboBox)getCBoxEstados().getModel();
//Adiciona na comboBox de Estados todos os estados encontrados na base de dados.
//(Base de Dados simulada pela Classe SimuladorBancoDados)
model.addAll(SimuladorBancoDados.consultarEstadosPorPais(nomePais));
}
/**
* This method initializes cBoxEstados
* @return javax.swing.JComboBox
*/
private JComboBox getCBoxEstados() {
if (cBoxEstados == null) {
cBoxEstados = new JComboBox(new ModeloComboBox());
cBoxEstados.setBounds(new Rectangle(62, 40, 160, 20));
cBoxEstados.setFont(new Font("Verdana", Font.PLAIN, 12));
}
return cBoxEstados;
}
/**
* This is the default constructor
*/
public ComboBoxDinamica() {
super();
initialize();
}
/**
* This method initializes this
* @return void
*/
private void initialize() {
this.setSize(238, 106);
this.setResizable(false);
this.setContentPane(getJContentPane());
this.setTitle("ComboBox Dinâmica");
}
/**
* This method initializes jContentPane
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(getCBoxPaises(), null);
jContentPane.add(getCBoxEstados(), null);
jContentPane.add(getLblPaises(), null);
jContentPane.add(getLblEstados(), null);
}
return jContentPane;
}
/**
* Classe interna responsável por gerenciar a comboBox de Estados.
* @author Gabriel
* @since 19/10/2010
* @version 1.0
*/
private class ModeloComboBox extends AbstractListModel implements ComboBoxModel{
private static final long serialVersionUID = -5909856485211809081L;
// Lista que representa os dados da comboBox
ArrayList<String> dados = new ArrayList<String>();
// Atributo onde será armazenado o valor do item selecionado na comboBox.
String selecionado = null;
public Object getElementAt(int index) {
return dados.get(index);
}
public int getSize() {
return dados.size();
}
public void setSelectedItem(Object newItem){
selecionado = (String)newItem;
}
public Object getSelectedItem(){
if(selecionado == null && dados.size() > 0){
selecionado = dados.get(0);
}
return selecionado;
}
/**
* Método responsável por adicionar valores na comboBox.
* @param String[] listaDados - Dados a serem adicionados.
*/
public void addAll(String[] listaDados) {
this.dados.clear();
setSelectedItem(null);
for(String dado : listaDados){
// Adicionando na comboBox item por item.
this.dados.add(dado);
//Atualiza o visual da comboBox a cada item adicionado.
fireIntervalAdded(dado, 0, 0);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Stub de método gerado automaticamente
SwingUtilities.invokeLater(new Runnable() {
public void run() {
ComboBoxDinamica thisClass = new ComboBoxDinamica();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
}
Download