Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / создание таблицы JTable / 20 сообщений из 20, страница 1 из 1
02.09.2004, 12:02
    #32677103
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Вопросик такой.
Не подскажет кто-нибудь, как создать табличку, причем хотелось бы вручную создать таблицу с нужными мне заголовками столбцов, а потом добавлять строки, сколько мне необходимо.

Есть метод
addColumn(TableColumn aColumn)
Но я не могу понять, как задать текстом название колонки
как объявить TableColumn с определенным названием или есть другие методы?

Заранее спасибо за ответы
...
Рейтинг: 0 / 0
02.09.2004, 12:17
    #32677158
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
ну раз RTFM читать не хочешь, то вот тебе пример, разбирайся.

сначала нужно создать свой класс, который наследует AbstractTableModel и переопределить след. методы. (Реализацию методов оставил для примера.)
Код: 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.
class MyTableModel extends AbstractTableModel{
  ResultSet rs;
  ResultSetMetaData rsmd;
  ArrayList cach;



  public MyTableModel(MainFrame mf){
    rs=mf.rs;
    cach=mf.cach;
    try{
      rsmd = rs.getMetaData();
    }catch(SQLException e){
      e.printStackTrace();
    }
  }
   //количество трок 
  public int getRowCount(){
    return cach.size();
  }
   //количество столбцов 
  public int getColumnCount(){
    try{
      return rsmd.getColumnCount();
    }catch(SQLException e){
      e.printStackTrace();
      return 0;
    }
  }
   //значение ячеек 
  public Object getValueAt(int r, int c){
    if(r<cach.size()){
      return ((Object[])cach.get(r))[c];
    }
    else{
      return null;
    }
  }

   //имена столбцов 
  public String getColumnName(int c){
    try{
      return rsmd.getColumnName(c + 1);
    }catch(SQLException e){
      e.printStackTrace();
      return "";
    }
  }
}

затем JTable table=new JTable(new MyTableModel());
...
Рейтинг: 0 / 0
02.09.2004, 12:19
    #32677167
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
А что такое RTFM
...
Рейтинг: 0 / 0
02.09.2004, 12:20
    #32677171
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
)))
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Ни перед одним из твоих печальных идолов я не склоняюсь в смирении и, тот, кто изрек "ты должен", есть мой смертный враг! Lavey(с)
...
Рейтинг: 0 / 0
02.09.2004, 12:23
    #32677182
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
akula84А что такое RTFM

Read The Fuking Manual
...
Рейтинг: 0 / 0
02.09.2004, 12:27
    #32677200
рубль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
akula84А что такое RTFM
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 //имена столбцов 
  public String getColumnName(int c){
    try{
      return rsmd.getColumnName(c + 1);
    }catch(SQLException e){
      e.printStackTrace();
      return "";
    }
  }
int c - номер столбца
return ... - нужно вернуть заголовок столбца. В данном примере он взят из ResultSetMetaData (физическое имя столбца в таблице). Можно брать из любой удобной для вас структуры данных или вообще прописать вручную.
Удачи. Читай доку.
...
Рейтинг: 0 / 0
02.09.2004, 12:44
    #32677263
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Вот в этой книге все подробно описано, скачай примеры.
...
Рейтинг: 0 / 0
02.09.2004, 13:21
    #32677387
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
А задавать имена столбцов как можно?
Нужно TableColumnModel использовать?
...
Рейтинг: 0 / 0
02.09.2004, 13:27
    #32677404
рубль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
akula84А задавать имена столбцов как можно?
Нужно TableColumnModel использовать?Интерестно. О чем и кому писал???
...
Рейтинг: 0 / 0
02.09.2004, 16:13
    #32677895
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Я создаю класс расширяющий AbstractTableModel, в нем объявляю названия колонок

private String[] columnNames =
{
"Номер", "Получатель", "Сумма", "Дата платежа"
};

В другом классе пишу
TableModel model = new table_docs();
JTable docs = new JTable(model);
JScrollPane jsp = new JScrollPane(docs);
jPanel3.add(jScrollPane1, null);


а потом при запуске программы ошибка
Class or public constructor for the class not found: new table_docs()

И в итоге таблица не появляется

Что здесь не так и почему не появляется табличка?

Заранее спасибо за ответы
...
Рейтинг: 0 / 0
02.09.2004, 16:50
    #32678013
А.Гpacoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
akula84Я создаю класс расширяющий AbstractTableModel, в нем объявляю названия колонок

private String[] columnNames =
{
"Номер", "Получатель", "Сумма", "Дата платежа"
};

В другом классе пишу
TableModel model = new table_docs();
JTable docs = new JTable(model);
JScrollPane jsp = new JScrollPane(docs);
jPanel3.add(jScrollPane1, null);


а потом при запуске программы ошибка
Class or public constructor for the class not found: new table_docs()

И в итоге таблица не появляется

Что здесь не так и почему не появляется табличка?

Заранее спасибо за ответы

конструктор скорее всего приватный у тебя.
...
Рейтинг: 0 / 0
03.09.2004, 10:37
    #32678782
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
А как зделать так, чтобы количество строк в таблице могло быть произвольным?
Ведь setValueAt похоже устанавливает значения в уже созданные строки

Заранее спасибо всем за ответы
...
Рейтинг: 0 / 0
03.09.2004, 10:41
    #32678789
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
А сколько MyTableModel JTabl-у скажет в
Код: plaintext
1.
2.
public int getRowCount(){
    return <сколько>;
  }
, столько строк и будет :)
...
Рейтинг: 0 / 0
03.09.2004, 11:23
    #32678916
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Этот же метод определяет количество строк,а как сказать таблице, что ей надо изменить кол строк на определенное значение или просто пользоваться setValue без появления ошибки OutOfBounds
...
Рейтинг: 0 / 0
03.09.2004, 11:48
    #32678993
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
у AbstractTableModel есть метод fireTableStructureChanged()

так вот сначала в модель вставляешь данные а затем вызываешь етод метод :)
Удачи!
...
Рейтинг: 0 / 0
03.09.2004, 21:55
    #32680188
GrayRat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Может пригодится...
...
Рейтинг: 0 / 0
03.09.2004, 22:02
    #32680191
GrayRat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
Кусочек кода с примером использования

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
JTable tblHistory = new JTable();
ListSelectionModel lsmHistory = new DefaultListSelectionModel();
JScrollPane spnHistory = new JScrollPane();
JTableModel tmdHistory = null;

...

String[] strSubjectH = {"Код", "Время", "Валютная пара", "Лот", "Цена открытия", "Время закрытия"};
Object[] strObjectH = {"", "", "", "", "", ""};
 //*/ 
tmdHistory = new JTableModel(strSubjectH, strObjectH, 0);

tblHistory.setAutoCreateColumnsFromModel(true);
tblHistory.setModel(tmdHistory);
tblHistory.setSelectionModel(lsmHistory);
tblHistory.setToolTipText("");
tblHistory.setRowHeight(36);
lsmHistory.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

Класс конечно не идеал, но простой, а там посмотришь внутрь... допишешь...
...
Рейтинг: 0 / 0
07.09.2004, 05:37
    #32682341
lamer___
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
"How to Use Tables "
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

все просто и понятно.

respect! -)
...
Рейтинг: 0 / 0
08.09.2004, 12:54
    #32685153
akula84
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
1)А существует ли свойства, чтобы делать ячейки нередактируемыми? Если использовать DefaultTableModel это возможно?если расширять AbstractTableModel, то isCellEditing,я так понимаю.

2)А еще такой вопросик. Предположим, что существует панель. Мы к ней добавляем JScrollPane,а к JScrollPane таблицу.
Код: plaintext
1.
2.
3.
4.
      model = new DefaultTableModel(result,columns);
      docs = new JTable(model);
      jPanel3.add(jScrollPane1, null);
      this.getContentPane().add(jPanel3, null);       
Предположим, что этот кусочек повторяем несколько раз, получается, что в таблицу каждый раз добавляются новые записи, а старые не удаляются. Как полностью удалять предыдущие записи?
3)И еще такой вопрос, можно ли например удалять принадлежность JScrollPane панели? так, чтобы таблица больше не появлялась на экране и удалялась из памяти?


Заранее спасибо за ответы
...
Рейтинг: 0 / 0
10.09.2004, 03:48
    #32688628
ArchiMage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание таблицы JTable
2 akula84:
1) А кто тебе мешает расширить DefaultTableModel и реализовать isCellEditable?
2) В коде не видно, где ты добавляешь таблицу к панели. Работай с одной таблицей, просто заново инициализируй docs с new JTable(model) и будет тебе счастье. Java сама заботится о памяти и очистке предыдущих объектов. Заново добавив docs к ScrollPane ты можешь проверить количество компонентов, протестировав их количество. Оно остается одним и тем же, что означает, что предыдущие таблицы в памяти не остаются. Удачи.
3)
Код: plaintext
1.
jScrollPane1.getViewport().remove(docs);
docs = null;
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / создание таблицы JTable / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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