Olá, pessoal. É o seguinte, eu tenho uma classe que extende o JComboBox. Sobrescrevi os métodos paintComponent() e paintBorder() para deixar o combo mais personalizado.
A ideia é implementar coisas como fundo gradiente, cantos arredondados e outras caracteristicas singulares na parte visual do componente. Estou fazendo isso com vários componentes da biblioteca swing e tenho tido bons resultados, criando JButtons e TextFields arredondados e com fundo gradiente.
Porém não consigo modificar o fundo do JComboBox e nem do PopupMenu dele pra inserir o gradiente. Eu defino setOpaque(false) e coloco o seguinte código no paintComponent():
public void paintComponent(Graphics g) {
// Criação do Gradiente
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int h = this.getHeight();
GradientPaint gradient = new GradientPaint(0, 0, this.corPrimaria, 0, h,
this.corSecundaria, false);
g2d.setPaint(gradient); // Insere o gradiente
// Retângulo de cantos arredondados
g.fillRoundRect(0, 0, getSize().width - 1, getSize().height - 1,
this.larguraArco, this.alturaArco);
super.paintComponent(g);
} // Fim do método paintComponente
Acredito que ele até chega a criar o fundo gradiente que eu quero apresentar, entretanto, acredito eu (me corrijam se eu estiver errado), os outros componentes (JPopupMenu, acho) “tapa” o fundo que eu criei.
Qualquer conselho ou um link que fale mais profundamente da parte gráfica do JComboBox será de grande ajuda. Obrigado.