Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Запрет на редактирование ячеек JTable / 13 сообщений из 13, страница 1 из 1
31.10.2006, 06:38:00
    #34092765
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Написал я на яве календарь. Но не могу сделать запрет на редактирование ячеек JTable. Конечно, есть методы setEnabled() и setFocusable(), но меня они не устраивают(невозможно кликать на какой-либо ячейке).
Не подскажите, как реализовать запрет на редактирование ячеек?
Заранеее благодарен
...
Рейтинг: 0 / 0
31.10.2006, 06:50:01
    #34092778
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Попробуйте так навскидку перекрыть метод TableModel.isCellEditable(int rowIndex, int columnIndex). Думаю поможет.
...
Рейтинг: 0 / 0
31.10.2006, 07:09:24
    #34092788
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
mysterioПопробуйте так навскидку перекрыть метод TableModel.isCellEditable(int rowIndex, int columnIndex). Думаю поможет.

А можно попробовать setEnabled перекрыть?
...
Рейтинг: 0 / 0
31.10.2006, 09:13:45
    #34092906
mysterio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
А вы почитайте описание метода JComponent.setEnabled(boolean enabled) и поймете.

Вы же запрещаете работать с данными (изменять их). Так что это явно к модели надо обращаться. BTW, неужели так сложно попровать? Там строчек 10 кода.
...
Рейтинг: 0 / 0
31.10.2006, 09:14:30
    #34092909
Vladimir Kozlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
324f4 mysterioПопробуйте так навскидку перекрыть метод TableModel.isCellEditable(int rowIndex, int columnIndex). Думаю поможет.

А можно попробовать setEnabled перекрыть?

setEnabled - неудобная штука, поскольку затрудняет выбор строк. А вот isCellEditable - самое то, он позволит отдельные колонки делать редактируемыми а другие нередактируемыми.
...
Рейтинг: 0 / 0
01.11.2006, 12:23:06
    #34096981
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
mysterioПопробуйте так навскидку перекрыть метод TableModel.isCellEditable(int rowIndex, int columnIndex). Думаю поможет.

А код в качестве примера не приведете? Что-то запутался совсем. Вроде как isCellEditable возвращает истину, когда можно редактировать ячейки...
...
Рейтинг: 0 / 0
01.11.2006, 12:30:51
    #34097017
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Примерно так. Взято из старого расширения JTable

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
...
 private  ArrayList nonEditableCells =  new  ArrayList();
...
  /**
   * Разрешает/запрещает редактировать ячейку таблицы.
   * 
   * <P> По умолчанию все ячейки таблицы разрешены к редактированию. Нумерация строк и столбцов начинается с 0.
   * @param row строка
   * @param column столбец
   * @param editable флаг редактирования
   */
   public   void  setCellEditable( int  row,  int  column,  boolean  editable)
  {
    Cell cell =  new  Cell(row, column);
     if  (editable)
    {
       while  (nonEditableCells.remove(cell)) {}
    }
     else 
    {
      nonEditableCells.add(cell);
    }
  }
  
  /**
   * Разрешает/запрещает редактировать строку таблицы.
   * 
   * <P> По умолчанию все строки таблицы разрешены к редактированию. Нумерация строк начинается с 0.
   * @param row строка
   * @param editable флаг редактирования
   */
   public   void  setRowEditable( int  row,  boolean  editable)
  {
     for  ( int  i =  0 ; i <  this .getColumnCount(); i++)
    {
       if  (editable)
      {
         while  (nonEditableCells.remove( new  Cell(row, i))) {}
      }
       else 
      {
        nonEditableCells.add( new  Cell(row, i));
      }
    }
  }
  
  /**
   * Разрешает/запрещает редактировать столбец таблицы.
   * 
   * <P> По умолчанию все столбцы таблицы разрешены к редактированию. Нумерация столбцов начинается с 0.
   * @param column столбец
   * @param editable флаг редактирования
   */
   public   void  setColumnEditable( int  column,  boolean  editable)
  {
     for  ( int  i =  0 ; i <  this .getRowCount(); i++)
    {
       if  (editable)
      {
         while  (nonEditableCells.remove( new  Cell(i, column))) {}
      }
       else 
      {
        nonEditableCells.add( new  Cell(i, column));
      }
    }    
  }
  
  /**
   * Возвращает возможность редактирования ячейки таблицы.
   * 
   * @param row строка
   * @param column столбцец
   * @return признак возможностиредактирования
   */
   public   boolean  isCellEditable( int  row,  int  column)
  {
    Cell cell =  new  Cell(row, column);
     for  ( int  i =  0 ; i < nonEditableCells.size(); i++)
    {
       if  (cell.equals(nonEditableCells.get(i)))
      {
         return  false;
      }
    }
     return   super .isCellEditable(row, column);
  }


Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
01.11.2006, 12:31:22
    #34097023
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Вдогонку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
   class  Cell
  {
    Integer Row =  null ;
    Integer Col =  null ;
    
     public  Cell(Integer row, Integer col)
    {
       if  (row !=  null )
      {
         this .Row = row;
      }
       else 
      {
         this .Row =  0 ;
      }
       if  (col !=  null )
      {
         this .Col = col;
      }
       else 
      {
         this .Col =  0 ;
      }
    }
    
     public  Integer getRow()
    {
       return   this .Row;
    }
    
     public  Integer getCol()
    {
       return   this .Col;
    }
    
     public   boolean  equals(Cell cell)
    {
       if  (cell.getRow() ==  this .getRow() && cell.getCol() ==  this .getCol())
      {
         return  true;
      }
       else 
      {
         return  false;
      }
    }
    
     public   boolean  equals(Object oCell)
    {
      Cell cell = (Cell)oCell;
       return  equals(cell);
    }    
  }

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
01.11.2006, 13:02:25
    #34097179
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
прописал в свой класс ваш код. Только ругается на :

public void setColumnEditable(int column, boolean editable)
public void setRowEditable(int row, boolean editable)
Не должны быть public void, требует тип boolean
...
Рейтинг: 0 / 0
01.11.2006, 13:40:56
    #34097402
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
А методы
public void setColumnEditable(int column, boolean editable);
public void setRowEditable(int row, boolean editable);
public void setColumnEditable(int column, boolean editable);
мы переопределяем или создаем сами?
В стандартных билиотеках avax.swing.JTable я их не нашел
...
Рейтинг: 0 / 0
01.11.2006, 14:20:10
    #34097601
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Этот код - кусок из расширения JTable (java 1.5). Следовательно, все методы, которых в JTable нет - наши, а все - которые есть - переопределённые. Cell - внутренний класс.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
01.11.2006, 14:52:30
    #34097761
324f4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
Ругается:
1) this.getColumnCount() - metod is undefined for the type Table, (Table -мой класс)
2) this.getRowCount() - metod is undefined for the type Table
3) return super.isCellEditable(row, column)- metod is undefined for the type JFrame

Может их еще надо дополнительно объявить, не подскажете как ?
...
Рейтинг: 0 / 0
01.11.2006, 15:16:03
    #34097883
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет на редактирование ячеек JTable
TableModel?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Запрет на редактирование ячеек JTable / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]