1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JComboBox custom render aparece em branco e sem borda pontilhada

Boa noite pessoal Estou com um problema visual nos meus JComboBox. Como a informação neles são objetos e eu tenho que obter o valor de uma propriedade, eu criei um render descendente do BasicComboBoxRenderer. O engraçado é que quando o combobox recebe o foco, ele não aparece a borda pontilhada e fica com o fundo branco, ao invés do cinza. Alguém sabe como resolver isso?

package br.com.tebosoftware.gui.componentes;

import java.awt.Component;
import javax.swing.JList;
import javax.swing.plaf.basic.BasicComboBoxRenderer;

/**
 *
 * @author Shubacca
 */
public abstract class CellRendererPadrao<E> extends BasicComboBoxRenderer {

    protected abstract String getTexto(E value);

    @Override
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        return super.getListCellRendererComponent(list, (value == null ? "" : getTexto((E) value)), index, isSelected, cellHasFocus);
    }
}

Certo: https://www.filepicker.io/api/file/DesK8I6kQ66bDsNLvQFC Errado: https://www.filepicker.io/api/file/ntMl3haPQOy7tbU642ft

Desde já agradeço.

  • Só porque é objeto você teve que criar um renderer? Porque não utilizar os recursos do próprio JComboBox para trabalhar com objetos.

    Marcelo Vasconcelos   16 de out de 2014
  • O jcombobox recebe uma lista de objetos e não uma lista de strings ligo eu tenho que colocar o valor que eu quero exibir. E o BasicComboBoxRenderer é a implementação padrão do jcombobox.

    tebosoftware   17 de out de 2014
  • Mas o jcombobox também recebe uma lista de objetos. Vou colocar um código bem simples para trabalhar com objetos diretamente no ComboBox sem a necessidade de renderer.

    Marcelo Vasconcelos   17 de out de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java swing ou faça a sua própria pergunta.