ComboxEditor alterar valor apresentado

Olá Pessoal,

antes de qualquer coisa, FELIZ 2009 para todos…

estou com um problema com um Jcombobox, segue imagem para explicar melhor.

o codigo que popula o combobox e ajusta o KeyEvent é este:

public TesteJCombobox() {
        initComponents();

        entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("PUCX").createEntityManager();

        jComboBox1.setRenderer(new ClientesCellRenderer());
        //jComboBox1.setEditor(new ClientesEditorCombobox());
        
        jComboBox1.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent e) {
                //jComboBox1.getSelectedItem().toString().length() > 1 &&
                if (jComboBox1.getSelectedIndex() < 0) {
                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                        query = entityManager.createQuery("SELECT c FROM Clientes c");
                        list = query.getResultList();
                        jComboBox1.setModel(new DefaultComboBoxModel(list.toArray()));
                        jComboBox1.setPopupVisible(true);
                    }
                }
            }
        });
    }

utilizei um renderer para pegar o getNome() do objeto na lista, mais no editor não estou conseguindo fazer com que ele não mostre o toString(), na verdade até consegui implementando um ComboxEditor, sobreescrevi o método setItem() e tal… baseado na implementação do BasicComboBoxEditor mas o que ocorreu e que ele quando seleciono um objeto na lista ele não o seta o mesmo, até adicionei um button pra mostrar o get do objeto.

Clientes cli = (Clientes) jComboBox1.getSelectedItem();
JOptionPane.showMessageDialog(null, cli.getIdcliente());

Qual o Editor padrão que o JCombobox implementa? é o BasicComboBoxEditor?
Estou utilizando o DefaultModel, pode haver relação com o problema?

abraço a todos.

Olá
Não sei muito utilizar o model, mas tem uma implementação que
me ajudou bastante, pode ser uma idéia para seu caso…

Link - post do aguiamen

Espero ter ajudado
FLwss

[quote=thiago.filadelfo]Olá
Não sei muito utilizar o model, mas tem uma implementação que
me ajudou bastante, pode ser uma idéia para seu caso…

Link - post do aguiamen

Espero ter ajudado
FLwss[/quote]

E ai Tiago,

Já tinha tentado algo com o Combox Model e extendendo o JCombo, o que está cocorrendo é que como eu carrego uma lista de objetos do tipo Cliente quando seleciono um no combobox estou tendo problema nesses metodos

[code]
public Object getItem() {
Object newValue = editor.getText();
if (oldValue != null && !(oldValue instanceof Clientes)) {
if (newValue.equals(oldValue.getNome())) {
return oldValue;
} else {
Class cls = oldValue.getClass();
try {
Method method = cls.getMethod(“getNome”, new Class[]{Clientes.class});
newValue = method.invoke(oldValue, new Object[] { editor.getText()});
} catch (Exception ex) {
}
}
}
return newValue;
}

public void setItem(Object anObject) {
    Clientes an = (Clientes) anObject;
    if (anObject != null) {
        editor.setText(an.getNome());
        oldValue = an;
    } else {
        editor.setText("");
    }
}[/code]

que são do meu ComboboxEditor, se setar o JCB como não editável blz… funciona tranquilo… mas esse no caso tem que ser editável, por que é para pesquisa no banco…

a var anObject desses metodos chega como String, que é o que está no JTexfield do editor.

Como posso alterar para ao receber o objeto (Cliente) mostre seu getNome() no editor e quando for selecionado um na lista, o combo me retorne o objeto Cliente…

Fiz essas alterações no codigo acima mais sem sucesso…

se alguem puder me dar uma dica pelo menos por onde começar… de repente to até fuçando no lugar errado e é mais simples de resolver…

Abraço e valeu pela dica Tiago.