Clicar na Linha da Jtable e Retornar o Item no JcomboBox

Bom dia.

Ontem fiz um tópico de como recuperar o ID de um objeto dentro do JcomboBox. Consegui graças a ajuda de voces.

Porem desde ontem a noite estou tentando fazer o seguinte procedimento.

Ao clicar na linha da jtable, ele vai voltar para o Formulário o O Item do jComboBox , quantidade e etc.

Quantidade estou conseguindo voltar, porem o item do jcombobox não.

Vou passar as classes abaixo.

MODELO DO COMBOBOX

///    ############################################################################
////            JCOMBOBOX
////    ############################################################################
    private void populacombo() {

        JbAlimentos.removeAllItems();
        ControleAlimentos controlee = new ControleAlimentos();
        controlee.listarTodos();

        List<AlimentosPojo> itenss = controlee.listarTodos();
        JbAlimentos.setModel(new DefaultComboBoxModel(itenss.toArray()));
        List<AlimentosPojo> arlalAlimentos = ItemdaoA.ConsultaAlimentacao(pojo);
        JComboBox comboboxItensAlimentos = new JComboBox(new DefaultComboBoxModel(arlalAlimentos.toArray()));
    }

    public class ControleAlimentos {

        public List listarTodos() {
            ItemAlimentacaoDao dao = new ItemAlimentacaoDao();
            try {
                return dao.ConsultaAlimentacao(pojo);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex);
            }
            return null;
        }
    }

EVENTO AO CLICAR NA TABELA.


private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
       
        // TODO add your handling code here:
        if (evt.getClickCount() == 1) {

            Object obj = (jTable1.getValueAt(jTable1.getSelectedRow(), 0));  //coluna 0
            String Id = obj.toString();
            Object obj1 = (jTable1.getValueAt(jTable1.getSelectedRow(), 1));  //coluna 1
            String codali = obj1.toString();
            Object obj2 = (jTable1.getValueAt(jTable1.getSelectedRow(), 2));  //coluna 2
            String nomeali = obj2.toString();
            Object obj3 = (jTable1.getValueAt(jTable1.getSelectedRow(), 3));  //coluna 3
            String quant = obj3.toString();
             
            

            JbAlimentos.setSelectedItem(nomeali); //RECEBE O NOME DO ALIMENTO PARA LOCALIZAR NO JCOMBOBOX
            Quant_Alimentos.setText(quant);
//
//            System.out.println(nomeali);
           
        }

    }                     

Sempre fiz dessa forma para retornar no combo, porem não era feita dessa forma o modelo do combobox

alguem pode me ajudar ?

tente fazer o seguinte

JbAlimentos.setEditable(true);
JbAlimentos.setSelectedItem(nomeali);
JbAlimentos.setEditable(false);

[quote=carlosdesa]Bom dia.

Ontem fiz um tópico de como recuperar o ID de um objeto dentro do JcomboBox. Consegui graças a ajuda de voces.

Porem desde ontem a noite estou tentando fazer o seguinte procedimento.

Ao clicar na linha da jtable, ele vai voltar para o Formulário o O Item do jComboBox , quantidade e etc.

Quantidade estou conseguindo voltar, porem o item do jcombobox não.

Vou passar as classes abaixo.

MODELO DO COMBOBOX

///    ############################################################################
////            JCOMBOBOX
////    ############################################################################
    private void populacombo() {

        JbAlimentos.removeAllItems();
        ControleAlimentos controlee = new ControleAlimentos();
        controlee.listarTodos();

        List<AlimentosPojo> itenss = controlee.listarTodos();
        JbAlimentos.setModel(new DefaultComboBoxModel(itenss.toArray()));
        List<AlimentosPojo> arlalAlimentos = ItemdaoA.ConsultaAlimentacao(pojo);
        JComboBox comboboxItensAlimentos = new JComboBox(new DefaultComboBoxModel(arlalAlimentos.toArray()));
    }

    public class ControleAlimentos {

        public List listarTodos() {
            ItemAlimentacaoDao dao = new ItemAlimentacaoDao();
            try {
                return dao.ConsultaAlimentacao(pojo);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex);
            }
            return null;
        }
    }

EVENTO AO CLICAR NA TABELA.


private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
       
        // TODO add your handling code here:
        if (evt.getClickCount() == 1) {

            Object obj = (jTable1.getValueAt(jTable1.getSelectedRow(), 0));  //coluna 0
            String Id = obj.toString();
            Object obj1 = (jTable1.getValueAt(jTable1.getSelectedRow(), 1));  //coluna 1
            String codali = obj1.toString();
            Object obj2 = (jTable1.getValueAt(jTable1.getSelectedRow(), 2));  //coluna 2
            String nomeali = obj2.toString();
            Object obj3 = (jTable1.getValueAt(jTable1.getSelectedRow(), 3));  //coluna 3
            String quant = obj3.toString();
             
            

            JbAlimentos.setSelectedItem(nomeali); //RECEBE O NOME DO ALIMENTO PARA LOCALIZAR NO JCOMBOBOX
            Quant_Alimentos.setText(quant);
//
//            System.out.println(nomeali);
           
        }

    }                     

Sempre fiz dessa forma para retornar no combo, porem não era feita dessa forma o modelo do combobox

alguem pode me ajudar ?[/quote]

Opa, Bom dia.

Deu certo, porem não intendi o motivo. Ele estava bloqueado ?

[quote=carlosdesa]Opa, Bom dia.

Deu certo, porem não intendi o motivo. Ele estava bloqueado ?[/quote]

O setEditable estava bloquiando a edição do campo.

Alguns confundem setEditable com setEnable. Enable habilita ou não voce utilizar determinado componente. O editable nao permite ser editado.

Por exemplo, se voce setar como enable um textfield, voce nao consegue clicar nele e editar, porém, consegue setar um valor assim textfield1.setText(“Valor aqui”);

Agora, se voce setar o editable como false, voce impossibilitou ele de ser editado. Setar como false essa opção, também não será possivel clicar no campo.

Abraços

Up! :smiley:

[quote=Gleidson Henrique][quote=carlosdesa]Opa, Bom dia.

Deu certo, porem não intendi o motivo. Ele estava bloqueado ?[/quote]

O setEditable estava bloquiando a edição do campo.

Alguns confundem setEditable com setEnable. Enable habilita ou não voce utilizar determinado componente. O editable nao permite ser editado.

Por exemplo, se voce setar como enable um textfield, voce nao consegue clicar nele e editar, porém, consegue setar um valor assim textfield1.setText(“Valor aqui”);

Agora, se voce setar o editable como false, voce impossibilitou ele de ser editado. Setar como false essa opção, também não será possivel clicar no campo.

Abraços[/quote]

Boa Noite, agora está dando esse erro.

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to Alimentacao.Tela.Alimentacao
	at Lotes.Tela.CadastroLotes.JbAlimentosItemStateChanged(CadastroLotes.java:356)
	at Lotes.Tela.CadastroLotes.access$500(CadastroLotes.java:20)
	at Lotes.Tela.CadastroLotes$6.itemStateChanged(CadastroLotes.java:154)
	at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1225)
	at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1282)
	at javax.swing.JComboBox.contentsChanged(JComboBox.java:1329)
	at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)
	at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:94)
	at javax.swing.JComboBox.setSelectedItem(JComboBox.java:578)
	at Lotes.Tela.CadastroLotes.jTable1MouseClicked(CadastroLotes.java:342)
	at Lotes.Tela.CadastroLotes.access$600(CadastroLotes.java:20)
	at Lotes.Tela.CadastroLotes$7.mouseClicked(CadastroLotes.java:228)
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
	at java.awt.Component.processMouseEvent(Component.java:6507)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

SEGUE O EVENTO

    private void JbAlimentosItemStateChanged(java.awt.event.ItemEvent evt) {                                             
        // TODO add your handling code here:
        if (evt.getStateChange() == java.awt.event.ItemEvent.SELECTED) {
            Alimentacao tipo = (Alimentacao) JbAlimentos.getSelectedItem();
            setId(tipo.getIdalimentacao());
            Cod_alimentacao.setText(String.valueOf(getId()));
        }
    }

Ele da erro ao clicar na tabela. alguem pode me ajudar ?

obrigado.

Bom dia, minhas ultimas esperanças são vocês, já pesquisei um monte na internet e pedi para meu professor, até agora nada.
Se alguém me ajudar eu agradeço muito.