![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Странная проблема у меня возникла. Сделал я прогресс монитор на базе описанного в древней ветке этого форума. Чуть модифицировал, но незначительно. Весь код повторять не буду, только главное: самодельное модальное окошко с прогресс баром хранится в переменной JProgressDlg progress, а JProgressDlg это подкласс JDialog. Показывается же этот диалог таким образом:
Проблема в том, что, если повторно вызывать длительные вычисления "украшенные" этим монитором, вылезает ошибка. При этом ошибка вылезает не всегда (но чаще, чем не вылезает), да еще и разная, однако всегда указыает на строку progress.setVisible(true); Вот примеры сообщений: java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 ..... java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 ..... java.util.NoSuchElementException: Vector Enumeration ..... java.util.NoSuchElementException: Vector Enumeration ..... java.lang.ArrayIndexOutOfBoundsException: 3 >= 3 ..... java.lang.ArrayIndexOutOfBoundsException: 3 >= 1 ..... java.lang.ArrayIndexOutOfBoundsException: 3 >= 2 Что за Array, что за Vector? Совершенно непонятно. Подбросьте, пожалуйста, идею как ловить ошибку. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Что это за код такой? Что за блок try? Выкладывайте нормальный, на такое даже смотреть не хочется. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Так он весь выложен. Сылка на другую ветку и там все целиком. Я привел только фрагмент, чтобы понятно было о какой строке я говорю. Это сообщение отредактировал(а) _Y_ - 26.1.2007, 23:43 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Приведи полный стек трейс ошибки, и фрагмент кода где она возникает (с указанием строки). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| _Y_ |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Вот фрагмент кода. По существу тот же, что описал DarkDS только сделан абстрактным, чтобы разные его наследники выполняли разные вычисления и операции.
Ошибки же выглядят так: Exception occurred during event dispatching: java.lang.ArrayIndexOutOfBoundsException: 2 >= 2 at java.util.Vector.elementAt(Vector.java:432) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:276) at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1968) at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1895) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142) at javax.swing.JComponent.paintComponent(JComponent.java:742) at javax.swing.JComponent.paint(JComponent.java:1005) at javax.swing.JComponent.paintChildren(JComponent.java:842) at javax.swing.JComponent.paint(JComponent.java:1014) at javax.swing.JViewport.paint(JViewport.java:728) at javax.swing.JComponent.paintChildren(JComponent.java:842) at javax.swing.JComponent.paint(JComponent.java:1014) at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4963) at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4916) at javax.swing.JComponent._paintImmediately(JComponent.java:4859) at javax.swing.JComponent.paintImmediately(JComponent.java:4666) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153) at java.awt.Dialog$1.run(Dialog.java:517) at java.awt.Dialog$2.run(Dialog.java:545) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:543) at java.awt.Component.show(Component.java:1300) at java.awt.Component.setVisible(Component.java:1253) at atherodecode.ProgressMonitoredThread$1.run(ProgressMonitoredThread.java:51) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Единственная строка в стеке, указывающая на мой код, выделена жирным шрифтом. Строка 51 это
Вот другой вариант: ругается два раза подряд: Exception occurred during event dispatching: java.lang.ArrayIndexOutOfBoundsException: 2 >= 2 at java.util.Vector.elementAt(Vector.java:432) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:276) at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1968) at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1895) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142) at javax.swing.JComponent.paintComponent(JComponent.java:742) at javax.swing.JComponent.paint(JComponent.java:1005) at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4963) at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4916) at javax.swing.JComponent._paintImmediately(JComponent.java:4859) at javax.swing.JComponent.paintImmediately(JComponent.java:4666) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153) at java.awt.Dialog$1.run(Dialog.java:517) at java.awt.Dialog$2.run(Dialog.java:545) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:543) at java.awt.Component.show(Component.java:1300) at java.awt.Component.setVisible(Component.java:1253) at atherodecode.ProgressMonitoredThread$1.run(ProgressMonitoredThread.java:51) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Exception occurred during event dispatching: java.lang.ArrayIndexOutOfBoundsException: 1 >= 1 at java.util.Vector.elementAt(Vector.java:432) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:276) at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:337) at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142) at javax.swing.JComponent.paintComponent(JComponent.java:742) at javax.swing.JComponent.paint(JComponent.java:1005) at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4963) at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4916) at javax.swing.JComponent._paintImmediately(JComponent.java:4859) at javax.swing.JComponent.paintImmediately(JComponent.java:4666) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:451) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153) at java.awt.Dialog$1.run(Dialog.java:517) at java.awt.Dialog$2.run(Dialog.java:545) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:543) at java.awt.Component.show(Component.java:1300) at java.awt.Component.setVisible(Component.java:1253) at atherodecode.ProgressMonitoredThread$1.run(ProgressMonitoredThread.java:51) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) А вот вариант, когда недовольна не Array-ем, Vector-ом: Exception occurred during event dispatching: java.util.NoSuchElementException: Vector Enumeration at java.util.Vector$1.nextElement(Vector.java:308) at javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:475) at javax.swing.JComponent.getPreferredSize(JComponent.java:1615) at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:78) at java.awt.Container.preferredSize(Container.java:1558) at java.awt.Container.getPreferredSize(Container.java:1543) at javax.swing.JComponent.getPreferredSize(JComponent.java:1617) at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:702) at java.awt.Container.layout(Container.java:1401) at java.awt.Container.doLayout(Container.java:1390) at java.awt.Container.validateTree(Container.java:1473) at java.awt.Container.validate(Container.java:1448) at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153) at java.awt.Dialog$1.run(Dialog.java:517) at java.awt.Dialog$2.run(Dialog.java:545) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:543) at java.awt.Component.show(Component.java:1300) at java.awt.Component.setVisible(Component.java:1253) at atherodecode.ProgressMonitoredThread$1.run(ProgressMonitoredThread.java:51) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Exception occurred during event dispatching: java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 at java.util.Vector.elementAt(Vector.java:432) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:276) at javax.swing.JTable$2.getMidPointAt(JTable.java:2403) at javax.swing.JTable$5.getLowerBoundAt(JTable.java:2501) at javax.swing.JTable.adjustSizes(JTable.java:2523) at javax.swing.JTable.adjustSizes(JTable.java:2507) at javax.swing.JTable.setWidthsFromPreferredWidths(JTable.java:2419) at javax.swing.JTable.doLayout(JTable.java:2307) at java.awt.Container.validateTree(Container.java:1473) at java.awt.Container.validateTree(Container.java:1480) at java.awt.Container.validateTree(Container.java:1480) at java.awt.Container.validate(Container.java:1448) at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:379) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:113) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153) at java.awt.Dialog$1.run(Dialog.java:517) at java.awt.Dialog$2.run(Dialog.java:545) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:543) at java.awt.Component.show(Component.java:1300) at java.awt.Component.setVisible(Component.java:1253) at atherodecode.ProgressMonitoredThread$1.run(ProgressMonitoredThread.java:51) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Как я уже писал, может и вообще не ругаться. Непонятно мне как ловить такую ошибку -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Судя по ошибке проблема в DefaultTableColumnModel, т.е. в таблице а не прогрес баре.
Ты используешь какую нибудь JTable с самописной моделью? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| _Y_ |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
1) Рассчет действительно берет данные из одной навороченной JTable и пишет в другую навороченную JTable. Но модели там только DefaultTableModel. 2) Рассчет у меня вызывается так, как описано у DarkDS:
Как Вы понимаете, ThreadCalculatePvalues здесь подкласс ProgressMonitoredThread. Если же я, в порядке теста, изменяю код так, чтобы вести рассчет не показывая прогресс монитор:
никакой ошибки не возникает. Обе таблицы прекрасно работают. Т.е. метод performWork(), занимающийся рассчетом и обращающийся к таблицам, сам по себе работает без проблем. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||
|
|||||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Эксперименты показывают, что ошибка возникает не когда окошку прогресс монитора действительно присваивается значение setVisible(true), а когда уже рассчеты отработаны. Видимо, когда окошко это пора закрыть. И, самое смешное, что окошко все равно закрывается и никаких проблем ни с рассчетами, ни с таблицами не наблюдается.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Stacktrace показывает, что какая-то таблица пытается нарисовать себя одновременно с изменением модели этой таблицы в другом потоке. Блокируйте EventDispatchThread в момент изменения.
-------------------- ![]() ![]() |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
По логике вещей (в моей программе) Ваше предположение выглядит правильно. Дело в том, что рассчет запускается по клику на закладке у JTabbedPane и таблица, содержание которой изменяется, находится именно на открываемой закладке. Но встает вопрос: а КАК грамотно заблокировать EventDispatchThread? Форум обыскал - не нашел. ЗЫ: В порядке эксперимента вставил в свой код Thread.sleep там где вызывается поток рассчетов:
Ошибка вроде больше не появляется. Но это, конечно, не решение т.к. блокируется GUI. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| w1nd |
|
||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Блокировка EDT (Event Dispatch Thread) блокирует GUI, разумеется. Если операция длительная, разбейте её на короткие. Блокируется так:
Это сообщение отредактировал(а) w1nd - 29.1.2007, 21:30 -------------------- ![]() ![]() |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
А как данные в этих JTable меняются? С использованием InvokeLater или без?
Дело в том, что DefaultTableModel не синхронизированна. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Честно говоря, я в этот раз еще слабо разобрался в тонкостях потоков. Поэтому на вопрос ответить трудно. Пишу что кого как вызывает: 1). Имеется GUI на нем JTabbedPane с закладками. На закладках таблицы. Огромные и поэтому работа с ними требует времени. 2) По клику на второй закладке проверяется были ли внесены изменения в первую таблицу и, если да, идет пересчет значений для рассчета второй таблицы (находящейся на второй закладке). Тут то и нужен прогресс монитор. 3) Создаю JProgressDlg dlg как видно из приведенного раньше кода, передаю его объекту класса ThreadCalculatePvalues, т.е. подклассу ProgressMonitoredThread. 4) Класс ThreadCalculatePvalues содержит метод performWork(), который, в частности, изменяет содержимое второй таблицы. Изменение происходит просто присвоением нового вектора данных:
Т.е. эти действия происходят в потоке принадлежащем объекту класса ThreadCalculatePvalues. По версии, основанной на любезном ответе w1nd, довольно часто в это же время Event Dispatch Thread меняет закладку и .... ошибка -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
1. Происходят ли изменения в data после того как он был установлен в table2? 2. Если сделать так:
ошибка останется? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| _Y_ |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 1 Всего: 34 |
Нет, до того таблица заполнена другим вектором данных.
Попробовал. Пришлось сделать final Vector data = new Vector(); Получилось!!!! Раз 50 кликнул да еще и с разными наборами данных - ошибка не лезет LSD, w1nd! Огромное спасибо! Последний вопрос уже чисто для повышения моего образовательного уровня: Почему все-таки единственная строка программы, на которую показывал стек ошибок была progress.setVisible(true); а не table2.setData(data);? -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||
|
|||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |