java jTable:如何知道行号?

时间:2011-06-20 14:13:54

标签: java swing jtable row renderer

我写了一个实现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;

    }



}

2 个答案:

答案 0 :(得分:3)

为什么要创建Value类和自定义渲染器?从代码中它只是一个布尔值。只需将Boolean直接添加到TableModel,然后覆盖JTable或TableModel的getColumnClass()方法以返回Boolean,表将使用默认的Boolean渲染器。

阅读JTable API并按照指向如何使用表格的Swing教程的链接获取使用布尔值的示例。

答案 1 :(得分:0)

使用传递给渲染器的row参数。它就像Java中的数组一样基于零。