我写了一个实现TableCellRenderer的类,因为我想把复选框放在jTable中。 在这个类的getTableCellRendererComponent方法中,我有条件:
if(isSelected){do .....}
在这个if条件下,我怎么知道行号?
代码:
private static class ValueRenderer extends JCheckBox
implements TableCellRenderer {
private static final Color hilite = new Color(0xE8E8E8);
public ValueRenderer() {
this.setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int col) {
Value v = (Value) value;
this.setSelected(v.selected);
if(isSelected)
{
if(v.selected==true)
System.out.println("checked");
else System.out.println("unchecked");
}
return this;
}
}
private static class Value {
private Boolean selected;
public Value(Boolean selected) {
this.selected = selected;
}
}
答案 0 :(得分:3)
为什么要创建Value类和自定义渲染器?从代码中它只是一个布尔值。只需将Boolean直接添加到TableModel,然后覆盖JTable或TableModel的getColumnClass()方法以返回Boolean,表将使用默认的Boolean渲染器。
阅读JTable API并按照指向如何使用表格的Swing教程的链接获取使用布尔值的示例。
答案 1 :(得分:0)
使用传递给渲染器的row参数。它就像Java中的数组一样基于零。