Problema ao carregar o Combobox [RESOLVIDO]

12 respostas
M

Seguinte… tenho uma classe com o Objeto combobox.
e nela quero que carregue apenas um campo do banco.
Porém na hora que fiz o select ele me traz todo o conteudo do banco
bagunçado.
vi alguns sites e achei Muita coisa boa porém não oque quero.

queria que visse somente o campo selecionado

Segue a classe

import java.awt.GridBagConstraints;  
import java.awt.GridBagLayout;  
import java.awt.GridLayout;  
import java.awt.Insets;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.util.ArrayList;  
import java.util.List;  
  
import javax.swing.JButton;  
import javax.swing.JComboBox;  
import javax.swing.JDialog;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JMenuItem;  
import javax.swing.JOptionPane;  
import javax.swing.JPanel;  
import javax.swing.JPopupMenu;  
import javax.swing.JScrollPane;  
import javax.swing.JTable;  
import javax.swing.JTextField;  
  
import br.com.impacta.cliente.app.action.WindowCloseAction;  
import br.com.impacta.cliente.app.action.bairro.BairroAlterarAction;  
import br.com.impacta.cliente.app.action.bairro.BairroApagarAction;  
import br.com.impacta.cliente.app.action.bairro.BairroEscolherMunicipioAction;  
import br.com.impacta.cliente.app.action.bairro.BairroEscolherUfAction;  
import br.com.impacta.cliente.app.action.bairro.BairroOkAction;  
import br.com.impacta.cliente.app.action.mouse.PopupMouseAdapter;  
import br.com.impacta.cliente.domain.model.Municipio;  
import br.com.impacta.cliente.service.BairroService;  
import br.com.impacta.cliente.service.impl.DefaultBairroService;  
  
import com.mysql.jdbc.Statement;  
  
public class CadastroBairroView extends JDialog implements ActionListener {  
  
    private static final long serialVersionUID = -2761006226478866005L;  
  
    private JComboBox<Object> ufJComboBox;  
    private JComboBox<Object> municipioJComboBox;  
    private JTextField nomeJTextField;  
    private JTable bairrosJTable;  
    private JButton okJButton;  
    private Object aAlterar = null;  
    private BairroService service;  
    private BairroEscolherMunicipioAction view;  
    private BairroEscolherUfAction view2;  
  
    public CadastroBairroView(JFrame mainView) {  
        super();  
  
        this.initComponents();  
        this.initPainel();  
        this.initPopupMenu();  
        this.initListeners();  
        this.initServices();  
        this.initcombobox();  
  
        this.setTitle("[IMPACTA] Cadastro de bairros");  
        this.setSize(630, 320);  
        this.setResizable(false);  
        this.setLocationRelativeTo(mainView);  
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);  
        this.setModalityType(ModalityType.DOCUMENT_MODAL);  
        this.setAlwaysOnTop(true);  
        this.setModal(true);  
    }  
  
    private void initcombobox() {  
  
        try {  
  
            try {  
  
            } catch (Exception cause) {  
                cause.printStackTrace();  
            }  
  
            try {  
  
                Class.forName("com.mysql.jdbc.Driver");  
  
            } catch (ClassNotFoundException ex) {  
                ex.printStackTrace();  
            }  
  
            Connection connection = (Connection) DriverManager.getConnection(  
                    "jdbc:mysql://localhost:3306/cliente-db", "impacta",  
                    "impacta");  
            Statement query = (Statement) connection.createStatement();  
  
            String sql = "SELECT * FROM municipio ";  
  
            ResultSet rs = query.executeQuery(sql);  
  
            List<Municipio> lisMunicipios = new ArrayList<Municipio>();  
  
            while (rs.next()) {  
                Municipio municipio = new Municipio();  
                municipio.setNome(rs.getString("id_uf"));  
                ufJComboBox.addItem(lisMunicipios);  
  
                lisMunicipios.add(municipio);  
  
            }  
  
        } catch (SQLException cause) {  
            cause.printStackTrace();  
            JOptionPane.showMessageDialog(null, "Não foi possivel Carregar");  
  
        }  
  
    }  
  
    private void initServices() {  
        this.service = new DefaultBairroService();  
  
    }  
  
    private void initComponents() {  
  
        // Criar array de UFs aqui.  
  
        Object[] ufs = new Object[] { "ESCOLHA" };  
  
        Object[] municipios = new Object[] { "ESCOLHA" };  
  
        this.ufJComboBox = new JComboBox<>(ufs);  
  
        this.municipioJComboBox = new JComboBox<>(municipios);  
  
        this.nomeJTextField = new JTextField();  
        this.bairrosJTable = new JTable(new Object[0][0], createColumnNames());  
        this.okJButton = new JButton("Ok");  
    }  
  
    private Object[] createColumnNames() {  
        return new Object[] { "Bairro", "Município", "UF" };  
    }  
  
    private void initPainel() {  
        JPanel painel = new JPanel(new GridBagLayout());  
        JPanel form = initForm();  
  
        painel.add(form, new GridBagConstraints(0, 0, 1, 1, 0, 0,  
                GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,  
                new Insets(0, 0, 0, 0), 0, 0));  
  
        painel.add(new JScrollPane(bairrosJTable), new GridBagConstraints(0, 1,  
                1, 1, 0, 0, GridBagConstraints.CENTER,  
                GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 200));  
  
        this.add(painel);  
    }  
  
    private JPanel initForm() {  
        // FIXME Ajustar layout para melhorar visual da janela.  
        JPanel form = new JPanel(new GridLayout(2, 4));  
  
        form.add(new JLabel("UF:"));  
        form.add(ufJComboBox);  
  
        form.add(new JLabel("Município:"));  
        form.add(municipioJComboBox);  
        form.add(new JLabel("Bairro:"));  
        form.add(nomeJTextField);  
        form.add(okJButton);  
  
        return form;  
    }  
  
    private void initPopupMenu() {  
        final JPopupMenu menu = new JPopupMenu();  
        JMenuItem item;  
  
        item = new JMenuItem("Alterar...");  
        item.addActionListener(new BairroAlterarAction(ufJComboBox,  
                municipioJComboBox, nomeJTextField, bairrosJTable));  
        menu.add(item);  
  
        item = new JMenuItem("Apagar...");  
        item.addActionListener(new BairroApagarAction(bairrosJTable));  
        menu.add(item);  
  
        bairrosJTable.addMouseListener(new PopupMouseAdapter(menu));  
    }  
  
    private void initListeners() {  
        this.ufJComboBox.addActionListener(new BairroEscolherUfAction(  
                ufJComboBox, municipioJComboBox, this));  
  
        this.municipioJComboBox  
                .addActionListener(new BairroEscolherMunicipioAction(  
                        municipioJComboBox, bairrosJTable, this));  
  
        this.okJButton.addActionListener(new BairroOkAction(municipioJComboBox,  
                nomeJTextField, bairrosJTable, this));  
  
        this.addWindowListener(new WindowCloseAction(this, "[IMPACTA] Bairros"));  
    }  
  
    public JComboBox<Object> getUfJComboBox() {  
        return ufJComboBox;  
    }  
  
    public void setUfJComboBox(JComboBox<Object> ufJComboBox) {  
        this.ufJComboBox = ufJComboBox;  
    }  
  
    public JComboBox<Object> getMunicipioJComboBox() {  
        return municipioJComboBox;  
    }  
  
    public void setMunicipioJComboBox(JComboBox<Object> municipioJComboBox) {  
        this.municipioJComboBox = municipioJComboBox;  
    }  
  
    public JTextField getNomeJTextField() {  
        return nomeJTextField;  
    }  
  
    public void setNomeJTextField(JTextField nomeJTextField) {  
        this.nomeJTextField = nomeJTextField;  
    }  
  
    public JTable getBairrosJTable() {  
        return bairrosJTable;  
    }  
  
    public void setBairrosJTable(JTable bairrosJTable) {  
        this.bairrosJTable = bairrosJTable;  
    }  
  
    public JButton getOkJButton() {  
        return okJButton;  
    }  
  
    public void setOkJButton(JButton okJButton) {  
        this.okJButton = okJButton;  
    }  
  
    public Object getaAlterar() {  
        return aAlterar;  
    }  
  
    public void setaAlterar(Object aAlterar) {  
        this.aAlterar = aAlterar;  
    }  
  
    public BairroService getService() {  
        return service;  
    }  
  
    public void setService(BairroService service) {  
        this.service = service;  
    }  
  
    public BairroEscolherMunicipioAction getView() {  
        return view;  
    }  
  
    public void setView(BairroEscolherMunicipioAction view) {  
        this.view = view;  
    }  
  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // TODO Auto-generated method stub  
  
    }  
  
    public BairroEscolherUfAction getView2() {  
        return view2;  
    }  
  
    public void setView2(BairroEscolherUfAction view2) {  
        this.view2 = view2;  
    }

12 Respostas

michetti

Personalize sua consulta ao banco de dados…

Pois com este comando:

String sql = "SELECT * FROM municipio ";

Você esta selecionando tudo da tabela municipio.

M

Boa tarde amigo.

Mesmo usando Select id_uf from municipio

Continua vindo tudo um do lado do outro.

RodrigoKaos
Era pra lista ser adicionada n vezez ao JComboBox?
List<Municipio> lisMunicipios = new ArrayList<Municipio>();    
    
            while (rs.next()) {    
                Municipio municipio = new Municipio();    
                municipio.setNome(rs.getString("id_uf"));    
                ufJComboBox.addItem(lisMunicipios);       
                lisMunicipios.add(municipio); 
}
M

então isso ai já está no Codigo.
o problema é que vem o campo que eu quero mas vem tudo acumulado um do lado do outro .

Vou mandar uma imagem

[img]

[/img]

RodrigoKaos

Eu sei que esta no seu codigo, mas o pedaço de codigo que eu destaquei está correto?

M

Está sim

RodrigoKaos

Se o ResultSet tiver 10 campos, quantas listas vão ser adicionadas ao comboBox?

//Nova lista de municipios
     List<Municipio> lisMunicipios = new ArrayList<Municipio>();      
          
                //Enquanto  verdade
                while (rs.next()) {   
                    
                    //Novo municipio    
                    Municipio municipio = new Municipio();      
                    municipio.setNome(rs.getString("id_uf"));      
                    
                    // ADICIONAR LISTA DE MUNICIPIOS AO COMBOBOX
                    ufJComboBox.addItem(lisMunicipios); 
                    //Adicionar municipio a lista
                    lisMunicipios.add(municipio);   
    }
M

vai adicionar quantas listas eu quiser adicionar ali.

michetti

Fazendo isto aqui.

ufJComboBox.addItem(lisMunicipios);

Dentro do while vai ser adicionado municipios enquanto tiver dados. O ideal seria você tirar ele e depois fazer um foreach.

RodrigoKaos

E dps que fizer isso, use distinct pra buscar só municipios diferentes, já que sua db esta reduntante

M

Hummm… entendi… vou fazer um foreach…vamos ver se resolve

M

Bom pessoal consegui dar uma adiantada aqui… agradeco a todos pela ajuda.
sendo assim… Obrigado.

Criado 14 de janeiro de 2014
Ultima resposta 15 de jan. de 2014
Respostas 12
Participantes 3