Assign selected item to Jcombobox

Asked

Viewed 858 times

0

I have a problem where my jComboBox values are not being returned but the values in the bank are correct.

I have a vehicle registration jFrame, which when triggered the search button, calls the methods pesquisaVeiculo and calls a jDialog to search the database. Right after selecting the desired vehicle, it closes and returns the values in jFrame of CadastroDeVeiculo, but jComboBox does not return any value, it keeps the Default item selected, already jTextField returns with the values that were selected.

jFrame = Cadastre deveiculos

    public class CadastroDeVeiculos extends javax.swing.JFrame {

    private Connection conexao;//Cria metodo de conexao

    //Construtor
    public CadastroDeVeiculos(){
        initComponents();
        this.setLocationRelativeTo(null);
    } 

    public void pesquisaVeiculo(){
        //Cria as variaveis e seta os valores dos get and set pegados na classe Veiculo
        PesquisaVeiculo pesquisa = new PesquisaVeiculo(this,true);
        pesquisa.setVisible(true);

        //Cria as variaveis
        Long id = pesquisa.getId_veiculo();
        String modelo = pesquisa.getModelo_veiculo();
        String cor = pesquisa.getCor_veiculo();
        int ano = pesquisa.getAno_veiculo();
        String placa = pesquisa.getPlaca_veiculo();
        String estado = pesquisa.getEstado_veiculo();
        String marca = pesquisa.getMarca_veiculo();
        String observacoe = pesquisa.getObservacoes_veiculo();
        Double valorMin = pesquisa.getValor_minimo_veiculo();
        Double valorMed = pesquisa.getValor_medio_veiculo();
        Double valorMax = pesquisa.getValor_maximo_veiculo();
        int quantidade = pesquisa.getQuantidade_veiculo();
        String tipo = pesquisa.getTipo_veiculo();

        //Seta os valores nos campos
        jTextFieldIdVeiculo.setText(String.valueOf(id));
        jTextFieldModelo.setText(modelo);
        jTextFieldCor.setText(cor);
        jTextFieldAno.setText(String.valueOf(ano));
        jFormattedTextFieldPlaca.setText(placa);
        jTextFieldEstado.setText(estado);
        jComboBoxMarca.setSelectedItem(marca);
        jTextFieldObservacoes.setText(observacoe);
        jFormattedTextFieldValorMin.setText(String.format("%.3f",(valorMin)));
        jFormattedTextFieldValorMed.setText(String.format("%.3f", (valorMed)));
        jFormattedTextFieldValorMax.setText(String.format("%.3f", (valorMax)));
        jTextFieldQuantidade.setText(String.valueOf(quantidade));
        jComboBoxTipo.setSelectedItem(tipo);
    }
}

jDialog = Search vehicle

    public class PesquisaVeiculo extends javax.swing.JDialog {

    private Long id_veiculo;
    private String modelo_veiculo;
    private String cor_veiculo;
    private int ano_veiculo;
    private String placa_veiculo;
    private String estado_veiculo;
    private String marca_veiculo;
    private String observacoes_veiculo;
    private double valor_minimo_veiculo;
    private double valor_medio_veiculo;
    private double valor_maximo_veiculo;
    private int quantidade_veiculo;
    private String tipo_veiculo;

    //GETTER AND SETTER
    public String getTipo_veiculo() {
        return tipo_veiculo;
    }

    public void setTipo_veiculo(String tipo_veiculo) {    
        this.tipo_veiculo = tipo_veiculo;
    }

    public Long getId_veiculo() {
        return id_veiculo;
    }

    public void setId_veiculo(Long id_veiculo) {
        this.id_veiculo = id_veiculo;
    }

    public String getModelo_veiculo() {
        return modelo_veiculo;
    }

    public void setModelo_veiculo(String modelo_veiculo) {
        this.modelo_veiculo = modelo_veiculo;
    }

    public String getCor_veiculo() {
        return cor_veiculo;
    }

    public void setCor_veiculo(String cor_veiculo) {
        this.cor_veiculo = cor_veiculo;
    }

    public int getAno_veiculo() {
        return ano_veiculo;
    }

    public void setAno_veiculo(int ano_veiculo) {
        this.ano_veiculo = ano_veiculo;
    }

    public String getPlaca_veiculo() {
        return placa_veiculo;
    }

    public void setPlaca_veiculo(String placa_veiculo) {
        this.placa_veiculo = placa_veiculo;
    }

    public String getEstado_veiculo() {
        return estado_veiculo;
    }

    public void setEstado_veiculo(String estado_veiculo) {
        this.estado_veiculo = estado_veiculo;
    }

    public String getMarca_veiculo() {
        return marca_veiculo;
    }

    public void setMarca_veiculo(String marca_veiculo) {
        this.marca_veiculo = marca_veiculo;
    }

    public String getObservacoes_veiculo() {
        return observacoes_veiculo;
    }

    public void setObservacoes_veiculo(String observacao_veiculo) {
        this.observacoes_veiculo = observacao_veiculo;
    }

    public double getValor_minimo_veiculo() {
        return valor_minimo_veiculo;
    }

    public void setValor_minimo_veiculo(double valor_minimo_veiculo) {
        this.valor_minimo_veiculo = valor_minimo_veiculo;
    }

    public double getValor_medio_veiculo() {
        return valor_medio_veiculo;
    }

    public void setValor_medio_veiculo(double valor_medio_veiculo) {
        this.valor_medio_veiculo = valor_medio_veiculo;
    }

    public double getValor_maximo_veiculo() {
        return valor_maximo_veiculo;
    }

    public void setValor_maximo_veiculo(double valor_maximo_veiculo) {
        this.valor_maximo_veiculo = valor_maximo_veiculo;
    }

    public int getQuantidade_veiculo() {
        return quantidade_veiculo;
    }

    public void setQuantidade_veiculo(int quantidade_veiculo) {
        this.quantidade_veiculo = quantidade_veiculo;
    }

    //--------------------------------------------------------------------------------------------------------------------
    //Metodos para pesquisa


    DefaultTableModel tmVeiculo = new DefaultTableModel(null, new String[]{"Id", "Modelo", "Cor", "Ano", "Placna","Estado" , "Marca",
        "Obeservações","Valor min.","Valor med.","Valor max.", "Quantidade", "Tipo"});//Colunas do JTablePesquisaVeiculo
    List<Veiculo> veiculo;
    ListSelectionModel lsVeiculo;

    //Construtor
    public PesquisaVeiculo(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
    }

    //Metodo para mostrar pesquisa no JTable
    public void mostraPesquisa(List<Veiculo> veiculo) {
        while(tmVeiculo.getRowCount()>0){
            tmVeiculo.removeRow(0);
        }
        if (veiculo.size() == 0) {
            JOptionPane.showMessageDialog(null, "Nenhum veiculo cadastrado!");
        } else {
            String[] linhaVeiculo = new String[]{null, null, null, null, null, null, null, null, null, null, null, null, null};

            for (int i = 0; i < veiculo.size(); i++) {
                tmVeiculo.addRow(linhaVeiculo);

                tmVeiculo.setValueAt(veiculo.get(i).getId_veiculo(), i, 0);
                tmVeiculo.setValueAt(veiculo.get(i).getModelo_veiculo(), i, 1);
                tmVeiculo.setValueAt(veiculo.get(i).getCor_veiculo(), i, 2);
                tmVeiculo.setValueAt(veiculo.get(i).getAno_veiculo(), i, 3);
                tmVeiculo.setValueAt(veiculo.get(i).getPlaca_veiculo(), i, 4);
                tmVeiculo.setValueAt(veiculo.get(i).getEstado_veiculo(), i, 5);
                tmVeiculo.setValueAt(veiculo.get(i).getMarca_veiculo(), i, 6);
                tmVeiculo.setValueAt(veiculo.get(i).getObservacoes_veiculo(), i, 7);
                tmVeiculo.setValueAt(veiculo.get(i).getValor_minimo_veiculo(), i, 8);
                tmVeiculo.setValueAt(veiculo.get(i).getValor_medio_veiculo(), i, 9);
                tmVeiculo.setValueAt(veiculo.get(i).getValor_maximo_veiculo(), i, 10);
                tmVeiculo.setValueAt(veiculo.get(i).getQuantidade_veiculo(), i, 11);
                tmVeiculo.setValueAt(veiculo.get(i).getTipo_veiculo(), i, 12);                
            }
        }
    }

    //Campo de pesquisa
    public void campoPesquisa() {
        try {
            VeiculoDao dao = new VeiculoDao();
            veiculo = dao.getListaVeiculo("%" + jTextFieldPesquisar.getText() + "%");
            mostraPesquisa(veiculo);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao pesquisar! = " + ex);
        }
    }

    //Seta os valores nos get and set da classe Veiculo
    public void setarDados() {
        int linhaselecionada = jTablePesquisarVeiculo.getSelectedRow();

        if (linhaselecionada!=-1) {

                id_veiculo = Long.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 0).toString());
                modelo_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 1).toString();
                cor_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 2).toString();
                ano_veiculo = Integer.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 3).toString());
                placa_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 4).toString();
                estado_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 5).toString();
                marca_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 6).toString();
                observacoes_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 7).toString();
                valor_minimo_veiculo = Double.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 8).toString());
                valor_medio_veiculo = Double.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 9).toString());
                valor_maximo_veiculo = Double.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 10).toString());
                quantidade_veiculo = Integer.valueOf(jTablePesquisarVeiculo.getValueAt(linhaselecionada, 11).toString());        
                tipo_veiculo = jTablePesquisarVeiculo.getValueAt(linhaselecionada, 12).toString();                

                dispose();

            } else {
            JOptionPane.showMessageDialog(rootPane, "Nenhum veiculo selecionado!");
            }
    }   

}

Control class = Vehicle

    public class VeiculoDao {
    private Connection conexao;//Cria metodo de conexao

    //Contrutor
    public VeiculoDao() throws SQLException{
        this.conexao = ConexaoBD.getConexao();  
    }

    public List<Veiculo> getListaVeiculo(String nome) throws SQLException{
        //Meotodo para pesquisa veiculos
        String sql = "select * from veiculo where modelo_veiculo like ?";

            PreparedStatement stmt = this.conexao.prepareStatement(sql);
            stmt.setString(1, nome);
            ResultSet rs = stmt.executeQuery();
            List<Veiculo> listaVeiculo = new ArrayList<Veiculo>();

            while(rs.next()){
                Veiculo veiculo = new Veiculo();

                veiculo.setId_veiculo(Long.valueOf(rs.getString("id_veiculo")));
                veiculo.setModelo_veiculo(rs.getString("modelo_veiculo"));
                veiculo.setCor_veiculo(rs.getString("cor_veiculo"));
                veiculo.setAno_veiculo(rs.getInt("ano_veiculo"));
                veiculo.setPlaca_veiculo(rs.getString("placa_veiculo"));
                veiculo.setEstado_veiculo(rs.getString("estado_veiculo"));
                veiculo.setMarca_veiculo(rs.getString("marca_veiculo"));
                veiculo.setObservacoes_veiculo(rs.getString("observacoes_veiculo"));
                veiculo.setValor_minimo_veiculo(rs.getDouble("valor_minimo_veiculo"));
                veiculo.setValor_medio_veiculo(rs.getDouble("valor_medio_veiculo"));
                veiculo.setValor_maximo_veiculo(rs.getDouble("valor_maximo_veiculo"));
                veiculo.setQuantidade_veiculo(rs.getInt("quantidade_veiculo"));
                veiculo.setTipo_veiculo(rs.getString("tipo_veiculo"));

                listaVeiculo.add(veiculo);     
            }
                rs.close();
                stmt.close();
                return listaVeiculo;       
    }

}

I also have the connection class to the bank, and the table of getters and setters vehicle.

Here are jCombobox model screens model and guy

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

In Jframeregistration Once the search and values return, only jComboBox is default

inserir a descrição da imagem aqui

When I put it Details and triggered closes the screen and returns the values for jFrame.

jDialog search, with values entered at the time of registration displayed, up to jComboBox.:

inserir a descrição da imagem aqui

How to solve this?

  • Where do you define the combobox model? There is too much unnecessary code for the question problem.

  • Diego F, the combo box model I defined by the netbeans graphical user interface, in the jComboBox properties menu, already created one at hand and set the values and returns me the same problem.

  • If the object passed to jcombobox does not have a relative identity in the model, it will not select any. Check if items in the model have any unfilled fields, or if the returned item has a different field.

  • Then Diego F already checked the items of the model, until I put them only with minuscule letters, but it did not help, I made a test putting a JTTABELA in my frame of registration of vehicles, and he returned the values in jComboBox certinho. This problem occurs to me only if I use Jdialog to return the values to the Frame.

  • Have you come to see if there is even a valid return on marca and tipo? By the codes presented, you can not even test the problem, try to add a [mcve] so that it is possible to simulate the problem.

  • put the combobox fill-in code. But already say that you must pass the whole object and not just the attribute Brand Name and Type

  • Yes, as I said if JTTABELA was in the same frame that I want to return the values of the database, jComboBox returns me the values of brand name and guy selected. How would this type of example you could post to help better understand the problem? Thanks for the help!

  • Why does jdialog have get and sets? This is a design flaw, If your search returns a vehicle, create an object of the vehicle type, fill it with the search data, and return a vehicle to the frame.

  • I used the get and sets because I could not bring the data otherwise, I am very lay still in java development, I will do the test to create the vehicle type object, thank you very much for the help.

  • Add how you are filling the two jcombobox.

  • Diego F, Krismorte I’ve been putting print of the screens for better understanding, I hope it helps to better understand my problem.

  • Michel, unfortunately on the network where I am, I can’t see the images.

  • All right Diego F, when you have a time for a look please

  • Michel, try debugging the code by placing breakpoints on the return of tipo and then in marca, check what is actually being returned. Remember: fiat is different from Fiat or fiat (with space at the end).

  • Diego F managed to fix, debug the code and realized that by declaring a String guy size 15 filled in blanks the rest of the string that had been passed in jComboBox, so I filled in the jComboBox model with the desired string and completed it with blanks up to the size set in the database. And returned me the value! Thank you very much, put the answer ae for min mark as a solution.

Show 10 more comments

1 answer

0


I debugged the code and realized that by declaring a String guy size 15 in the database filled in blanks the rest of the string that had been passed in jComboBox, so I filled in the jComboBox model with the desired string and completed it with blanks until the size set in the database. And returned me the value!

  • Ta using field char in your database? Normally varchars fields, even with predefined size, only use what is needed by the framed string.

  • Diego F I’m using the Postgresql and my variable called guy defined on the seat as character tipo (15), which type would be indicated not to auto-complete with white spaces? Thanks for the help!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.