Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > JTable - cортировка


Автор: Хрдличек 10.7.2003, 22:22
Нужно отсортировать данные в JTable. Вот здесь нашел пример как это сделать:

http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

Там 3 файла - TableMap.java (implements TableModel and serves as a superclass for data manipulators)

TableSorter.java is a TableMap subclass that sorts the data provided by another table model

И третий, TableSorterDemo.java показывает как это работает.

Так как программист я только временно из-за скупости нашего босса )) и опыта особого нет, то я просто скопировал все что можно из TableSorterDemo в мою программу:

MyTableModel myModel = new MyTableModel();
TableSorter sorter = new TableSorter(myModel);
//JTable table = new JTable(myModel);
JTable table = new JTable(sorter);
sorter.addMouseListenerToHeaderInTable(table);

Код идентичный, за исключением того что Demo работает, а моя прога ругается следующим:


t.java:65: <identifier> expected
sorter.addMouseListenerToHeaderInTable(table);
^
t.java:65: package sorter does not exist
sorter.addMouseListenerToHeaderInTable(table);


Чего делать, люди добрые? Какой-то package надо создать?




Автор: simanyay 11.7.2003, 14:37
Ты наверное создаешь эти классы в разных файлах? Если так, то тебе нужно создать пакет. Создай папку типа C:\stable и засунь эти файлы туда. Далее в начале каждого файла (перед import'ами!) пиши package stable;. После этого должно заработать. Есди неохота всё это делать, то создай файл TableSorterDemo.java и засунь туда, все эти классы. Но только сначала убери у всех классов КРОМЕ TableSorterDemo модификатор public. Если не получится пиши, разберусь в этих файлах более досконально.

Автор: Хрдличек 12.7.2003, 22:29
Цитата
Ты наверное создаешь эти классы в разных файлах? Если так, то тебе нужно создать пакет.


Я честно говоря думал, что если все файлы изначально находятся в одной папке, то они будут друг друга "видеть"?

В любом случае, я сначала попытался провернуть второй вариант (все в одном файле) - те же самые две ошибки.

А если пакет создавать, то нужно все файлы, входящие в пакет, перекомпилировать? Я сделал это для своей основной программы и получилось уже 4 ошибки:

t.java:53: <identifier> expected
sorter.addMouseListenerToHeaderInTable(table); //ADDED THIS
^
t.java:50: cannot resolve symbol
symbol : class TableSorter
location: class Mypack.t2
TableSorter sorter = new TableSorter(myModel);
^
t.java:53: package sorter does not exist
sorter.addMouseListenerToHeaderInTable(table);
^
t.java:50: cannot resolve symbol
symbol : class TableSorter
location: class Mypack.t2
TableSorter sorter = new TableSorter(myModel);




Автор: Хрдличек 12.7.2003, 22:40

Cейчас вернулся к первоначальному варианту без пакетов и закомментировал последнюю строчку генерирующую ошибки:

MyTableModel myModel = new MyTableModel();
TableSorter sorter = new TableSorter(myModel);
JTable table = new JTable(sorter);
//sorter.addMouseListenerToHeaderInTable(table);

Все прокомпилировалось, только конечно не сортирует ничего без Listener, но получается, что вторая строчка прошла нормально, значит тот класс оно все-таки видит?



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)