1

我写了一个实现 TableCellRenderer 的类,因为我想在 jTable 中放置复选框。在此类的 getTableCellRendererComponent 方法中,我有条件:

if(isSelected){ 做 ..... }

在这个 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;

    }



}
4

2 回答 2

3

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

阅读 JTable API 并点击关于如何使用表的 Swing 教程的链接,以获取使用布尔值的示例。

于 2011-06-20T14:32:46.547 回答
0

Use the row parameter passed to your renderer. It's zero based just like arrays in Java.

于 2011-06-20T14:23:27.677 回答