|
|
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
привет ) Такая вот тривиальная задача, по идее возникает у каждого, наверно. Переделываю чужую программу, получение и редактирование данных написал, вопрос теперь в интерфейсных удобствах. Сам в Swing новичок. Есть форма с jList и детальная форма с полями некоего "инструмента". jList заполняю так: объявляю список Код: java 1. вывожу в конструкторе Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. кнопка редактирования: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Вопрос в том, как сделать, чтобы при сохранении результатов редактирования в списке загрузились новые данные. Желательно обновить только один элемент а не все тянуть. Я находил примеры, но они были простые и с обычным массивом а не с БД. Внятных примеров с методами fire*** тоже не нашел. Я должен из детальной формы вызывать какой то метод главной формы или напрямую писать в ту коллекцию, или в главной создать некий "Listener" который среагирует на окончание редактирования? Если помните, где такие примеры описываются и по каким словам гуглить, то перенаправьте на статью/книгу ) P.S. Еще - правильно ли использовать ArrayList<> или лучше вектор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 07:48:26 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
тут вариант предложили, делать подчиненное окно не на основе jFrame а на основе jPanel, пихать его в диалоговое окно и потом после закрытия обновлять главное окно. http://www.coderanch.com/t/346099/GUI/java/Update-Data-Frames Но минус в том что в окне появляются дополнительные кнопки "ОК" или "Yes","No","Cancel" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 11:34:07 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
О Боже, я это сделал сам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 18:59:55 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
Если не сложно напиши как сделал:) Может у кого возникнет такой же вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 19:01:45 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
По моему это никому тут не интересно или это слишком азбучные истины, раз никто не снизошел до ответа. Ну все равно, выложу. Я примерно понимал, что дочернее окно открывается в другом потоке и надо добавить щепотку асинхронности, ну и догадался методом тыка. Когда создали дочернее окно, назначаем ему делегат и передаем данные Код: java 1. реализация слушателя-делегата Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Все, после закрытия дочернего окна, в списке меняется значение само ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 19:17:04 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
badboychikПо моему это никому тут не интересно или это слишком азбучные истины, раз никто не снизошел до ответа. Вы были на правильном пути на счет fire методов. badboychik Ну все равно, выложу. Я примерно понимал, что дочернее окно открывается в другом потоке и надо добавить щепотку асинхронности, ну и догадался методом тыка. Нет здесь ни других потоков, ни асинхронности. Всё работает в Event Dispatch Thread. Когда создали дочернее окно, назначаем ему делегат и передаем данные Код: java 1. 2. 3. 4. 5. 6. 7. 8. [/quot] Что даёт загрузка данных по закрытию окна? Данные в этом же окне? badboychikВсе, после закрытия дочернего окна, в списке меняется значение само Ааа... Ну, ректальный слегка подход. А как это окно вызывается? Это диалог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 19:31:15 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. InstrumentEdit - это JFrame в котором редактируется одна запись. Список всех записей тоже в JFrame. Почему нет потоков? Если после этого кода, чтото написать, оно сразу выполнится, хотя я еще дочернее не закрывал, поэтому надо событие закрытия ловить. А про fire*** нигде нет примеров. Я их переопределял, ставил точку останова и туда никогда не попадал, короче непонятно что с ними делать, если в списке не тупой вектор, а данные из БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 22:53:30 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
badboychik, почитайте что такое EDT и как работает Swing. Вот в этой книге, во второй главе кажется, понятно и коротко написано. Swing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 23:15:08 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. badboychikInstrumentEdit - это JFrame в котором редактируется одна запись. Почему не диалог? badboychikПочему нет потоков? Если после этого кода, чтото написать, оно сразу выполнится, хотя я еще дочернее не закрывал, поэтому надо событие закрытия ловить. А это не значит что поток "уснул", или окно запустилось в другом потоке. Этот же поток обслуживает все окна, всю отрисовку и все события, всех Swing окон. badboychikА про fire*** нигде нет примеров. Я их переопределял, ставил точку останова и туда никогда не попадал, короче непонятно что с ними делать, если в списке не тупой вектор, а данные из БД Там всё сложно. Вы обновляете данные, в коде самой ListModel. После этого вы должны сами вызвать правильный fire метод, он уведомит всех слушателей, в том числе и UI слой, что надо обновить картинку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 11:31:44 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
2 варианта в зав-ти от ТЗ и БЛ: - Модальный диалог и на кнопку ОК обновляем только VIEW одной строки. Т.к. коммит и данные уже на сервере. - Не модальнвя форма с кучей листенеров и событиями по смене фокуса и смене хозяина-привязанного окна. Первый вариант проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2013, 12:52:42 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
автор// Если это диалог, то вот сюда рантайм не дойдет, пока диалог не будет закрыть.дойдет, т.к. у меня JFrame и после его открытия продолжается выполнение дальше. Я повесил один листенер на его закрытие и все ОК стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 09:47:10 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
плюс теперь додумался как сделать биндинг и стало совсем приятно ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 09:49:56 |
|
||
|
Обновление формы списка после изменения данных в детальной форме
|
|||
|---|---|---|---|
|
#18+
badboychikавтор// Если это диалог , то вот сюда рантайм не дойдет, пока диалог не будет закрыть.дойдет, т.к. у меня JFrame и после его открытия продолжается выполнение дальше. Я повесил один листенер на его закрытие и все ОК стало. JFrame не диалог. И почему там JFrame, мы так ответа и не услышим. Ну и мне казалось, очевидным, что так работает только с модальными диалогами. Поэтому их удобно использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2013, 10:40:20 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38158177&tid=2129929]: |
0ms |
get settings: |
19ms |
get forum list: |
29ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
74ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
108ms |
get tp. blocked users: |
3ms |
| others: | 335ms |
| total: | 613ms |

| 0 / 0 |
