Java jTable: как узнать номер строки?

Я написал класс, который реализует TableCellRenderer, так как я хочу поставить галочки внутри jTable. В методе getTableCellRendererComponent этого класса у меня есть условие:

если (выбрано) { сделать ..... }

внутри этого условия, как я могу узнать номер строки?

код :

 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;

    }



}

person shaw    schedule 20.06.2011    source источник
comment
просто используйте row, он находится в подписи метода, поэтому он должен быть доступен   -  person Fender    schedule 20.06.2011
comment
Я не заметил этого, спасибо за вашу помощь!   -  person shaw    schedule 20.06.2011
comment
будьте осторожны, делая это. Таким образом, вы будете вынуждены использовать один рендерер для всех значений строки в одном столбце.   -  person Heisenbug    schedule 20.06.2011


Ответы (2)


Почему вы создаете класс Value и собственный рендерер? Из кода это просто логическое значение. Просто добавьте Boolean непосредственно в TableModel, а затем переопределите метод getColumnClass() JTable или TableModel, чтобы он возвращал Boolean, и таблица будет использовать средство визуализации Boolean по умолчанию.

Прочтите JTable API и перейдите по ссылке на учебное пособие Swing «Как использовать таблицы» для примера, в котором используются логические значения.

person camickr    schedule 20.06.2011

Используйте параметр строки, переданный вашему средству визуализации. Он основан на нуле, как массивы в Java.

person chubbsondubs    schedule 20.06.2011