Fala galera blz?
é o seguinte, montei meu JComboBox da seguinte forma:
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import javax.swing.*;
public class teste extends JFrame {
private JComboBox jcbCor;
public teste() {
ListCellRenderer renderer = new ComplexCellRenderer();
Object elements[][] = {
{"Azul", "-13421569"},// valor -13421569 é capturado com Integer.toString(componente.getBackground().getRGB());
{"Amarelo", "-205"},
{"Vermelho", "-65536"}};
jcbCor = new JComboBox(elements);
jcbCor.setRenderer(renderer);
add(jcbCor);
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
System.exit(0);
}
});
jcbCor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(jcbCor.getSelectedItem().toString());
}
});
}
public static void main(String[] args) {
teste main = new teste();
main.setSize(200, 65);
main.setVisible(true);
}
}
class ComplexCellRenderer implements ListCellRenderer {
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
String nome = null;
String cor = null;
JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
if (value instanceof Object[]) {
Object values[] = (Object[]) value;
nome = (String) values[0];
cor = (String) values[1];
renderer.setText(nome);
renderer.setBackground(Color.decode(cor));
} else {
nome = "";
}
return renderer;
}
}
Problema:
*Nao consigo pegar o item selecionado (jcbCor.getSelectedItem)
*Como faco para pegar a cor de fundo do item selecionado
Alguma sugestao?