|
|
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Сижу с ней уже второй месяц. После фоксового grid и студийного DataGridView это какой-то монстр. Сама по себе конструкция гибкая но громоздкая как черти знает что. Крыша помаленьку съезжает. Что не понятно, или точнее что бесит (возможно от того что не понятно). Описание структуры отображаемых в JTable данных реализуется через TableModel - в принципе жить можно, но с ее помощью не опишешь внешний вид (размеры и положения столбцов, редакторы ячеек и т.д.). Ну и ладно, создам TableColumnModel - то же здорово. Но как теперь это все помирить ? В классе TableModel будет обязательно присутстовать метод обновления данных (данные я получаю с SQL сервера) оканчивающийся на fireTableChanged(null); (я не нашел другого способа нормально обновляться, может тут проблема ?) после чего всю мою установленную для jTable TableColumnModel сносит напроч, т.е. таблица попросту перестраивается и я ее вынужден заново "причесывать". Не проблема конечно после обновления сказать jTable1.setColumnModel(тытытуту), но как то это все шиворот-навыворот чтоли. Как оно по людски то делаться должно. Если будете посылать.... ну в смысле в интернет то плиз по конкретным ссылкам, от гугля, яндекса и апорта меня уже тошнит. Все вылетает на сановскую документацию или на аналогичные вопросы, а нужна просто методика, пуская да же какая то теория. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2007, 23:42:51 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Далеко посылать не нужно - javadoc и исходники JTable. И кто же это Вас надоумил листенеры оповещать событием null? Для тех кому, простите, мозгов не хватает сформировать грамотное событие сделаны соответствующие методы: javadoc void fireTableCellUpdated(int row, int column) Notifies all listeners that the value of the cell at [row, column] has been updated. void fireTableDataChanged() Notifies all listeners that all cell values in the table's rows may have changed. void fireTableRowsDeleted(int firstRow, int lastRow) Notifies all listeners that rows in the range [firstRow, lastRow], inclusive, have been deleted. void fireTableRowsInserted(int firstRow, int lastRow) Notifies all listeners that rows in the range [firstRow, lastRow], inclusive, have been inserted. void fireTableRowsUpdated(int firstRow, int lastRow) Notifies all listeners that rows in the range [firstRow, lastRow], inclusive, have been updated. void fireTableStructureChanged() Notifies all listeners that the table's structure has changed. Атеперь внимательно смотрим в исходники 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. И Вас еще что-то удивляет? Обращаю внимание на метод createDefaultColumnsFromModel(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 00:49:08 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. Надоумил меня пример JDBCAdapter из папочки Demo JDK. И всетаки, ну почему каждый раз надо заново изобретать велосипед. Неужели статеек на русском для заядлых фоксятников, дельфятников, и прочих переметнувшихся нету. И ведь в магазине шаром покати...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 01:20:18 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovНеужели статеек на русском для заядлых фоксятников, дельфятников, и прочих переметнувшихся нету. И ведь в магазине шаром покати...... Рекомендую И про сановскую документацию не забывайте - там есть все что нужно, причем в доступной форме. На вражъем языке правда, но тут уж ничего не попишешь - если занимаешься программированием, то вражий язык нада знать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 12:20:27 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
А вот в какой книжке есть хороший материал по созданию интерфесов для бух программ, торговлей, зарплат и т.д. Я только в этом году за книги по различным языкам тыс 6-7 растратил. Из трех-четырех изданий кое как удается набрать чтолибо вразумительно. Может есть рекомендации. А вообще, почему в интернете то ничего путевого нет ? Технология не развита ? Или просто редко используется в такой сфере ? Или секрет ? По Net, по VFP, по Delphi сколько хошь.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 12:53:58 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
На Sat, 09 Jun 07 09:53:58 GMT "olegov" <nospam@sql.ru> записано: > Автор: olegov > А вот в какой книжке есть хороший материал по созданию интерфесов для > бух программ, торговлей, зарплат и т.д. Я только в этом году за книги > по различным языкам тыс 6-7 растратил. Из трех-четырех изданий кое > как удается набрать чтолибо вразумительно. Может есть рекомендации. А > вообще, почему в интернете то ничего путевого нет ? Технология не > развита ? Или просто редко используется в такой сфере ? Или секрет ? > По Net, по VFP, по Delphi сколько хошь.... Тема Ответить Сообщение > а ключи от квартиры в которой деньги лежат? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 13:01:24 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovА вот в какой книжке есть хороший материал по созданию интерфесов для бух программ, торговлей, зарплат и т.д. Я только в этом году за книги по различным языкам тыс 6-7 растратил. Из трех-четырех изданий кое как удается набрать чтолибо вразумительно. Может есть рекомендации. А вообще, почему в интернете то ничего путевого нет ? Технология не развита ? Или просто редко используется в такой сфере ? Или секрет ? По Net, по VFP, по Delphi сколько хошь.... этот боян тут раз в месяц регулярно рвётся. да. на Swing давно забили ... тынц пынц дрынц пыдымц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 13:20:00 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Deady На Sat, 09 Jun 07 09:53:58 GMT "olegov" <nospam@sql.ru> записано: > > По Net, по VFP, по Delphi сколько хошь.... Тема Ответить Сообщение > а ключи от квартиры в которой деньги лежат? Posted via ActualForum NNTP Server 1.4 Ну чего так сразу "ключи от квартиры", я то прошу книгу издать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 14:50:13 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
expp olegovА вот в какой книжке есть хороший материал по созданию интерфесов для бух программ, торговлей, зарплат и т.д. Я только в этом году за книги по различным языкам тыс 6-7 растратил. Из трех-четырех изданий кое как удается набрать чтолибо вразумительно. Может есть рекомендации. А вообще, почему в интернете то ничего путевого нет ? Технология не развита ? Или просто редко используется в такой сфере ? Или секрет ? По Net, по VFP, по Delphi сколько хошь.... этот боян тут раз в месяц регулярно рвётся. да. на Swing давно забили ... тынц пынц дрынц пыдымц это как это забили ? там чужие и непонятные компоненты, а хочется свои родные. Да собственно вопрос-то сузился к тому как TableColumnModel после резапроса данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 14:54:41 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
авторДа собственно вопрос-то сузился к тому как TableColumnModel после резапроса данных. Я же уже все рассказал. fireTableDataChanged() или setAutoCreateColumnsFromModel(false) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 16:01:01 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
2олегов авторА вот в какой книжке есть хороший материал по созданию интерфесов для бух программ, торговлей, зарплат и т.д заведи здесь топик такой и пость туда. И другим интересно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 17:17:03 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovА вот в какой книжке есть хороший материал по созданию интерфесов для бух программ, торговлей, зарплат и т.д. Я только в этом году за книги по различным языка тыс 6-7 растратил. Из трех-четырех изданий кое как удается набрать чтолибо вразумительно. Может есть рекомендации. А вообще, почему в интернете то ничего путевого нет ? Технология не развита ? Или просто редко используется в такой сфере ? Или секрет ? По Net, по VFP, по Delphi сколько хошь.... В выделенном ваша проблема. В мире Java (в отличии от Delphi, например) книги надо покупать не по языкам, а по технологиям. Фаулер, Блох, GoF... Ответ по книгам - Купер, Раскин, Спольски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2007, 23:59:34 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Вот ну чем дальше в лес тем больше дров..... 1. При создании TableModel я создаю вектор содержащий собственно набор данных. Как выцепить содержание текущей строки вектора данных ? Т.е. той строки которая сейчас выбрана в таблице ? 2. Набор данных (ResultSet) может содержать какое то количество столбцов, не факт что я их все хочу отобразить в таблице. Один из вариантов - не выливать то что не нужно в вектор, но тогда опять пункт 1. + как еще и выцепить текущую строку из ResulSet. 3. Как программно переместиться на нужную строку в наборе данных, т.е. не только в таблице но и в векторе и в ResultSet. (как встать на нужную запись в ResultSet я знаю, но при этом и в векторе в Таблице должно произойти то же самое) И на последок, чем чревато использование resultSet.TYPE_SCROLL_SENSITIVE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 09:07:37 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
1. Если именно в модели, то getSelectedRow(), а затем по возвращенному индексу getValueAt(строка, столбец) 2. не понял 3. установить программно jTable1.setRowSelectionInterval(начало, конец); прокрутить до установленного jTable1.scrollRectToVisible(jTable1.getCellRect(строка, столбец, true)); Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya Aiya Eärendil Elenion Ancalima! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 09:59:12 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
hinotf 2. не понял Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya Aiya Eärendil Elenion Ancalima! Положим я с сервера получаю набор данных со столбцами code, name, address, phone, inn, а в таблице хочу показать code, name, inn..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 11:05:32 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
1.получить данные 2.поместить их в DefaultTableModel 3.table.setModel(модель) 4.добавить колонки вручную - чтоб автоматом колонки из модели не создавались: table.setAutoCreateColumnsFromModel(false); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 12:23:26 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
10241.получить данные 2.поместить их в DefaultTableModel 3.table.setModel(модель) 4.добавить колонки вручную - чтоб автоматом колонки из модели не создавались: table.setAutoCreateColumnsFromModel(false); Как понять "добавить колонки вручную" ? Как тупо добавить колонки к таблице я знаю, а как их из мождели добавить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 13:19:57 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
TableColumn(int modelIndex) table.addColumn( примерно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 13:46:04 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
hinotf1. Если именно в модели, то getSelectedRow(), а затем по возвращенному индексу getValueAt(строка, столбец) Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya Aiya Eärendil Elenion Ancalima! Это прокатывает пока столбец не сортирован, после сортировки естественно не катит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 13:47:43 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Еще момент. Я пытаясь отследить событие перемещения по строкам создаю такую конструкцию setSelectionMode(selectionModel.SINGLE_SELECTION); getSelectionModel().addListSelectionListener(new RowSelectionEvent()); . . . . class RowSelectionEvent implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { System.out.println(getSelectedRow()); } } Почему когда я перемещаюсь по таблице клавишами-стрелками все нормально (выдается номер строки), а когда мышкой номер строки выдается два раза, т.е один раз перехватывается события нажатия кнопки, а один раз отпускание ? И как эту строку связать с источником данных для TableModel ? Ко' шмар какойто...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 14:21:53 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegov - читайте javadoc, он рулит Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 15:45:08 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
но в целом проблему это не решило, как быть если столбец соротирован ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 17:21:34 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
ну нужно отковырять сортировку, и через сортировочную модель получить доступ к исходной (там же типа Chain Of Resp pattern) короч, я писал в своё время такую ...ню: TableModel кот обёртывал List<Bean>, ColumnModel строился из моих колонок, которые имплементили: get/set редактируемую проперть Beanа, renderer, editor (ну и такую лажу как title). намудохалсо вдоволь ... а что из тех ссылок действительно ничего не подошло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 17:25:39 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
exppну нужно отковырять сортировку, и через сортировочную модель получить доступ к исходной (там же типа Chain Of Resp pattern) короч, я писал в своё время такую ...ню: TableModel кот обёртывал List<Bean>, ColumnModel строился из моих колонок, которые имплементили: get/set редактируемую проперть Beanа, renderer, editor (ну и такую лажу как title). намудохалсо вдоволь ... а что из тех ссылок действительно ничего не подошло? Да нет, ссылки нормальные как образец вполне прилично, но я на фоксе привык со своими компонентами работать. Не охото чужие глюки отлавливать, а иногда приходится долше разбираться с чужими компонентами чем свой написать. Так один раз разберусь и навсегда..... если не чекнусь..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 18:57:53 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
О как ларец то просто открывался при установленном setAutoCreateRowSorter(true) получить "правильный" индекс строки вот так можно getRowSorter().convertRowIndexToModel(getSelectedRow()) за идею смотреть в сторону сортера спасибо expp !!! Э кака хитра штука ента jTable. Жисть налаживается....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 19:13:07 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
1. на жабе типа принято всё заимствовать у более башковитых (ну и иногда багфиксом им помогать) 2. незачто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 20:03:36 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovО как ларец то просто открывался Привыкайте. Это Java - тут главное найти заветный ключик. А ключик заветный всегда (или почти всегда) есть в JavaDoc (в google точно есть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 00:29:20 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Leonidv olegovО как ларец то просто открывался Привыкайте. Это Java - тут главное найти заветный ключик. А ключик заветный всегда (или почти всегда) есть в JavaDoc (в google точно есть). JavaDoc и Google помогают когда хотябы приблизительно знаешь в какую сторону рыть. Как говориться правильно сформулированный вопрос это уже половина ответа, у тут как слепой котенок..... Кстати попутный вопрос, а два раза подписаться на одно событие нельзя чтоль ? У меня такая бяка вышла. Я создал свой класс из jTable (jTableBase), в нем подписался на событие перемещения по строкам типа getSelectionModel().addListSelectionListener(new RowSelectionEvent()); и т.д. , потом уже в приложении использующем мой класс опять подписываюсь на это событие jTableBase1.getSelectionModel().addListSelectionListener(new myRowSelectionEvent()); . Обработка события в классе уже не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 01:15:19 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
очередной тупик..... Сразу после подключения jTable к модели ни однс трока не выбрана. если при этом я пытаюсь выполнить changeSelection(тынс тыдынс) система сообщает об ошибке типа чет там с индексом, но скажем если я мышом или клавиатурой перейду на какую нить строчку то проблем с changeSelection(тынс тыдынс) никаких нет. Я так понял что сей метод начинает чего-то отсчитывать от текущей позиции чтоль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 12:33:54 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
сори.... чет нагородил чего попади..... проблема в другом - как передать фокус на объект ? Во.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 12:52:29 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovсори.... чет нагородил чего попади..... проблема в другом - как передать фокус на объект ? Во.... olegov, Вы javadoc по религиозным соображениям не читаете? JComponent#requestFocusInWindow(boolean) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 13:19:11 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
fixxer olegovсори.... чет нагородил чего попади..... проблема в другом - как передать фокус на объект ? Во.... olegov, Вы javadoc по религиозным соображениям не читаете? JComponent#requestFocusInWindow(boolean) Читаю по мере чтнеия пытаюсь его понять. requestFocusInWindow(boolean) не прогатывает и просто requestFocus(), оттого и спрашиваю. Я не правильно сформулировал свой вопрос. Проблема визуально вот в чем у меня для таблицы установлено setSelectionMode(selectionModel.SINGLE_SELECTION) После setModel(model) строка никакая не выделена, это и понятно. Если набор данных не пуст можно принудительно встать на первую строку changeSelection(0, 0, true, true) но при этом строка опять же не выделяется, а отмечается лишь первая ячейка changeSelection(1, 0, true, true) changeSelection(2, 0, true, true) позволяет перемещаться по таблице, но при этом выделение строки опять же не происходит однако если я перед changeSelection щелкну по таблице мышкой или перейду в нее tab-ом то строка остается выделенной и после последующих changeSelection Вот в чем проблема собственно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 14:52:56 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
А книги вы какие читали? Чтобы направления найти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 15:25:01 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
JTable#getSelectionModel().setSelectionInterval(int, int) Опять же javadoc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 15:36:30 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
LeonidvА книги вы какие читали? Чтобы направления найти? Ильдар Хабибуллин Самоучитель JAVA 2 основы разжеваны, но про Jtable и работа с данными материала практически 0. Да собственно хотелось просто поверхностно пробежать по технологии до этого бегал по Net. Скорее всего остановлюсь всетаки на Java Достаточно похожие вещи, но у Java много "но" сыгравшие свою роль в выборе. На выходных пойду закупаться литературой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 19:24:26 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
fixxerJTable#getSelectionModel().setSelectionInterval(int, int) Опять же javadoc если честно, то что MSDN что JavaDoc легко читается когда хочешь уточнить детали, как первоисточник для освоения инструмента совсем не годится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 19:26:07 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegovНа выходных пойду закупаться литературой. это стратьем чтоли, которое устарело еще два года назад? ню ню... если охота тратить деньги, вперед, но перед этим советую посетить http://java.sun.com/docs/books/tutorial/uiswing/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2007, 20:56:29 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
Хочу заметить, что в других языках, например VFP, Delphi, все так или иначе крутится вокруг создания GUI и данных, которые мы там отображаем. В Java же Swing лишь одна из частей, хоть и входящее в JFC. Возможно в этом кроется причина недоумения olegov по поводу отсутствия информации о том как же делать толстых клиентов к БД. В отличие от дельфей, которые изначально позиционировались как средство разработки клиент-серверных решений (я здесь имею ввиду "классический" клиент сервер БД <=> GUI), я вообще молчу про VFP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 00:20:11 |
|
||
|
Задолбала jTable.....
|
|||
|---|---|---|---|
|
#18+
olegov Ильдар Хабибуллин Самоучитель JAVA 2 Хорстманн ваш выбор, только обязательно оба тома. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 00:39:01 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2145402]: |
0ms |
get settings: |
16ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
60ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
112ms |
get tp. blocked users: |
3ms |
| others: | 305ms |
| total: | 564ms |

| 0 / 0 |
