ola, ca estou novamente.
o meu problema é que tenho uma Jtable em que as suas celulas contem uma jcombobox, nessa jcombobox estão 2 imagens, quando clico na combobox aparecem as imagens, mas quando escolhe alguma dessas imagens o resultado obtido não é a imagem mas sim o texto associado com essa imagem, esta classe é criada num ficheiro separado que é chamado da minha classe principal.
Alguem sabe como resolver isso???
codigo na classe principal que chama o construtor da combobox:
CaixaCombinacao combobox = new CaixaCombinacao();
DefaultCellEditor editor = new DefaultCellEditor(combobox);
tabelatarefa.setDefaultEditor(Object.class, editor);
A classe que cria a combobox é:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;
public class CaixaCombinacao extends JComboBox{
ImageIcon[] imagens;
String[] op = {"x", "check"};
public CaixaCombinacao(){
imagens = new ImageIcon[op.length];
Integer[] intArray = new Integer[op.length];
for (int i = 0; i < op.length; i++) {
intArray[i] = new Integer(i);
imagens[i] = createImageIcon("imagens/" + op[i] + ".gif");
this.addItem(imagens[i]);
if (imagens[i] != null) {
imagens[i].setDescription(op[i]);
}
}
JComboBox combobox = new JComboBox(intArray);
ComboBoxRenderer renderer= new ComboBoxRenderer();
combobox.setRenderer(renderer);
}
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = CaixaCombinacao.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
}
return null;
}
class ComboBoxRenderer extends JLabel
implements ListCellRenderer {
public ComboBoxRenderer() {
setOpaque(true);
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
}
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
int selectedIndex = ((Integer)value).intValue();
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
ImageIcon icon = imagens[selectedIndex];
String opc = op[selectedIndex];
setIcon(icon);
System.out.println("FOI ESCOLHIDO " + this);
return this;
}
}
}