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

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

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

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

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

А код в качестве примера не приведете? Что-то запутался совсем. Вроде как isCellEditable возвращает истину, когда можно редактировать ячейки...
...
Рейтинг: 0 / 0
Запрет на редактирование ячеек JTable
    #34097017
Фотография 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.
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
Запрет на редактирование ячеек JTable
    #34097023
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку
Код: 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
Запрет на редактирование ячеек JTable
    #34097179
324f4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прописал в свой класс ваш код. Только ругается на :

public void setColumnEditable(int column, boolean editable)
public void setRowEditable(int row, boolean editable)
Не должны быть public void, требует тип boolean
...
Рейтинг: 0 / 0
Запрет на редактирование ячеек JTable
    #34097402
324f4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А методы
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
Запрет на редактирование ячеек JTable
    #34097601
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код - кусок из расширения JTable (java 1.5). Следовательно, все методы, которых в JTable нет - наши, а все - которые есть - переопределённые. Cell - внутренний класс.

Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
...
Рейтинг: 0 / 0
Запрет на редактирование ячеек JTable
    #34097761
324f4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается:
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
Запрет на редактирование ячеек JTable
    #34097883
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TableModel?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Запрет на редактирование ячеек JTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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