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
In Jframeregistration Once the search and values return, only jComboBox is default
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.:
How to solve this?
Where do you define the combobox model? There is too much unnecessary code for the question problem.
– user28595
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.
– Michell Xexeu
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.
– user28595
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.
– Michell Xexeu
Have you come to see if there is even a valid return on
marca
andtipo
? 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.– user28595
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
– Krismorte
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!
– Michell Xexeu
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.
– user28595
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.
– Michell Xexeu
Add how you are filling the two jcombobox.
– user28595
Diego F, Krismorte I’ve been putting print of the screens for better understanding, I hope it helps to better understand my problem.
– Michell Xexeu
Michel, unfortunately on the network where I am, I can’t see the images.
– user28595
All right Diego F, when you have a time for a look please
– Michell Xexeu
Michel, try debugging the code by placing breakpoints on the return of
tipo
and then inmarca
, check what is actually being returned. Remember:fiat
is different fromFiat
orfiat
(with space at the end).– user28595
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.
– Michell Xexeu