因此,我有一个带有复选框的JTable。我希望复选框在“检查”时包含一个图像,在“未选中”时显示另一个图像(即,显示图像而不是选中或未选中的框)。有没有办法做到这一点?我试图用TableCellRenderer与一个ImageIcon返回一个JLabel,但它不是非常有效。Java Swing,试图用图像图标复选框替换JTable中的布尔值复选框
更具体地,当箱被选中还是未选中的右图像是有的,但是当用户正在改变的复选框的状态(当鼠标向下)核对原件/未选中的图像出现
这是我试过的TableCellRenderer(我也有JPanels尝试过,但,这是无效的,以及
public class CrassusEventTableCellEyeRenderer extends JCheckBox implements TableCellRenderer {
static Icon greyEye;
static Icon blackEye;
{//STATIC CODE BLOCK
try {
greyEye = new ImageIcon(ImageIO.read(new File("icons/shittyTest.png")));
blackEye = new ImageIcon(ImageIO.read(new File("icons/blackEye.png")));
} catch (IOException e) {
greyEye = null;
blackEye = null;
}
}
public CrassusEventTableCellEyeRenderer(){
super();
this.addItemListener(new IsCheckedItemListener());
setIcon(greyEye);
}
//commented out code that I have tried in place of the IsCheckedItemListener
/*
@Override
public void setSelected(boolean sel){
super.isSelected();
if(sel)
setIcon(blackEye);
else
setIcon(greyEye);
}
*/
public class IsCheckedItemListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
if(isSelected())
setIcon(blackEye);
else
setIcon(greyEye);
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
System.out.println("value: "+value+", row: "+row+", column: "+column);
if(value instanceof Boolean){
setSelected(((Boolean) value).booleanValue());
}
return this;
}
}
*“我试过。” *为了更好地帮助越早,张贴[SSCCE] (http://sscce.org/)。 –
'当他们被“检查”时有一个图像,而当他们“未被检查”时有另一个图像'在实现这个之后你做了什么?它只是为了好玩,或者你正在努力实现某些目标? B'coz通过查看图像,最终用户将无法识别它的含义。 – Amarnath
@Che在我们的界面中没有足够的空间用于复选框的描述;我还会尝试在鼠标悬停的光标旁边获取说明。认为在照相馆层接口的“眼睛”和“锁定” –