Pegar dados da JTable e inserir em uma ComboBox[RESOLVIDO]

Olá pessoal na textField funciona tranquilo, porém não insere o dado da JTable na ComboBox.
Abaixo, minha própria JTable:

package view;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import model.Cidade;

public class CidadeTableModel extends AbstractTableModel{

    public static final int COL_CODIGO = 0;
    public static final int COL_NOME = 1;
    public static final int COL_UF = 2;
    public ArrayList<Cidade> listarCidade;

    public CidadeTableModel(ArrayList<Cidade>l){
        listarCidade = new ArrayList<Cidade>(l);
    }

    public int getRowCount() {
        return listarCidade.size();
    }

    public int getColumnCount() {
        return 3;
    }

    public Object getValueAt(int linhas, int colunas) {
        Cidade cid = listarCidade.get(linhas);
        if(colunas == COL_CODIGO) return cid.getCodigo();
        if(colunas == COL_NOME) return cid.getNome();
        if(colunas == COL_UF) return cid.getUf();
        return null;
    }

    @Override
    public String getColumnName(int colunas){
        if(colunas == COL_CODIGO) return "ID";
        if(colunas == COL_NOME) return "Nome";
        if(colunas == COL_UF) return "UF";
        return null;
    }

}

Evento ao clicar na linha:

    private void tbDadosMouseClicked(java.awt.event.MouseEvent evt) {                                     
        tfCodigo.setText(tbDados.getValueAt(tbDados.getSelectedRow(), CidadeTableModel.COL_CODIGO).toString());
        tfNome.setText(tbDados.getValueAt(tbDados.getSelectedRow(), CidadeTableModel.COL_NOME).toString());
        cbUf.setSelectedItem(tbDados.getValueAt(tbDados.getSelectedRow(), CidadeTableModel.COL_UF).toString());
    }

No aguardo.

NOMEDOCOMBOX.setSelectedItem(VARIAVEL);

Olá angelopppp,

Já havia feito, também não deu certo!

Obrigado.

int linhaselcionada = tabela.getSelectedRow();
String emp,lot,tip,che,ent,sta;
emp= (String) tabela.getValueAt(linhaselcionada, 0);
lot= (String) tabela.getValueAt(linhaselcionada, 1);
tip= (String) tabela.getValueAt(linhaselcionada, 2);
che= (String) tabela.getValueAt(linhaselcionada, 3);
ent= (String) tabela.getValueAt(linhaselcionada, 4);
sta= (String) tabela.getValueAt(linhaselcionada, 5);
empresa.setText(emp);
nomedoarquivo=emp+che+ent+lot;
lote.setText(lot);
chegada.setText(che);
entrega.setText(ent);
tipo.setSelectedItem(tip);
status.setSelectedItem(sta);

da uma olhadinha ai talvez ajude este seria o meu botao selecionar de um programa q tenho

Primeiro de tudo, crie um método get no seu TableModel, que retorna uma cidade inteira e pare de usar o getValueAt:

public Cidade get(int row) { return listarCidade.get(row); }

Isso te livra de várias coisas:

  1. Depender da posição das colunas;
  2. Ter que localizar uma cidade que o model já tem no banco de dados;
  3. Ter que fazer casts do tipo de dado dos campos;
  4. Ter que trabalhar com tipos de dados individuais e não com objetos.

Em seguida, certifique-se que o método toString() da classe que você quer exibir no combo esteja implementado com o que você quer que apareça na combo:

@Override public String toString( ){ return nome; }

É importante implementar o equals e o hashcode dessa classe também.

Finalmente, agora basta retirar do model e inserir na combo. Note que com o método get fica bem mais legível:

private void tbDadosMouseClicked(java.awt.event.MouseEvent evt) { int row = tbDados().getSelectedRow(); if (row &lt; 0) return; CidadeTableModel model = (CidadeTableModel)(tbDados.getModel()); Cidade cidade = model.get(row); tfCodigo.setText(cidade.getCodigo()); tfNome.setText(cidade.getNome()); cbUf.setSelectedItem(cidade.getUf()); }

1 curtida

Valeu pessoal pela ajuda!

Bom dia , sou iniciante e estou com um problema parecido com este.

Queria saber como estar setando o valor quando seleciono uma linha na tabela no jcombox, mas não estou conseguindo , quando o valor é numero ele mostra normalmente, agora quando é letra ele não mostra no jcombox

segue parte do codigo

private void jTableVeiculosLinhaSelecionada(JTable tb){
        if (tb.getSelectedRow() != -1){
  
            jComboBoxVeiculo.setSelectedItem(veiculos.get(tb.getSelectedRow()).getVEICULO().toString());
            jComboBoxMarca.setSelectedItem(veiculos.get(tb.getSelectedRow()).getMARCA());
            jTextFieldNome.setText(veiculos.get(tb.getSelectedRow()).getNOME());
            jComboBoxCor.setSelectedItem(veiculos.get(tb.getSelectedRow()).getCOR());
            jComboBoxAnoFabricacao.setSelectedItem(veiculos.get(tb.getSelectedRow()).getANO()); 
            jFormattedTextFieldPlaca.setText(veiculos.get(tb.getSelectedRow()).getPLACA()); 
            jComboBoxCidade.setSelectedItem(veiculos.get(tb.getSelectedRow()).getCIDADE());
            jFormattedTextFieldRenavam.setText(veiculos.get(tb.getSelectedRow()).getRENAVAM());
            jFormattedTextFieldChassi.setText(veiculos.get(tb.getSelectedRow()).getCHASSI());
            jComboBoxCombustivel.setSelectedItem(veiculos.get(tb.getSelectedRow()).getCOMBUSTIVEL());
    
    }

Neste caso queria saber pq numero ele mostra e quando é letra não.

Por exemplo:

Se o valor do campo na tabela for “GOL” , ele não mostra no jcombobox, agora se o valor do campo na tabela for “1”, ele mostra normalmente.

Obrigado pela ajuda

Ja resolvi , obrigado a todos