Обновлять JTable при закрытии окна

Добрый день!

У меня есть основная программа (назовем ее window1), которая отображает JTable и заполняется данными из базы данных SQL. Когда вы дважды щелкаете по JTable, открывается новое окно (назовем его window2), которое позволяет пользователю редактировать базу данных.

Я хотел бы добавить windowListener к окну2, чтобы при его закрытии он сообщал окну1 о повторном заполнении содержащегося там JTable.

Я попытался посмотреть на события окна и попытался понять, как их использовать, но я просто не понимаю этого... Если вам нужны определенные части моего кода, не стесняйтесь спрашивать.

У меня есть метод в моей основной программе, который первоначально обновляет JTable при загрузке окна1, но мне нужно выяснить, как вызвать этот метод при закрытии окна2.

Заранее спасибо!


person Ethan Moore    schedule 22.04.2016    source источник
comment
I tried looking around at window events and attempted to figure out how to use them, but I'm just not understanding it... Начните с раздела руководства по Swing [Как написать WindowListener]() в качестве рабочего примера. Однако я не рекомендую WindowListener для этого. Тем не менее, держите ссылку на учебник под рукой, чтобы узнать об этом и других основах Swing.   -  person camickr    schedule 22.04.2016
comment
Моральный диалог, модальный диалог, модальный диалог, любой другой ответ - просто трата времени.   -  person MadProgrammer    schedule 22.04.2016


Ответы (2)


Что именно у вас есть в окне 2? Может есть кнопка подтверждения? Если это так, то вы можете вызвать метод обновления JTable внутри слушателя для этой кнопки.

person Andrei-Marius Longhin    schedule 22.04.2016
comment
Да, на самом деле. У меня есть кнопки «добавить», «обновить» и «удалить». Я попытаюсь заставить это работать с помощью кнопки «обновить». Я не думал об этом... Спасибо! - person Ethan Moore; 22.04.2016
comment
Хотя это был не тот ответ, который я искал, это решило мою проблему, используя более простой способ ее решения. Так. Ты великолепен. - person Ethan Moore; 22.04.2016
comment
Рад, что смог помочь! - person Andrei-Marius Longhin; 23.04.2016

Я хотел бы добавить windowListener к окну2, чтобы при его закрытии он сообщал окну1 о повторном заполнении содержащейся там JTable.

Трудной частью всего этого является не передача информации — это можно сделать просто с помощью методов получения и установки. Нет, сложность обычно заключается в том, чтобы знать, когда передавать информацию, и для этого у вас есть один из двух вариантов.

  • На сегодняшний день проще всего сделать так, чтобы окно2 было не JFrame, а модальным JDialog. Это похоже на JFrame и может содержать все, что содержит JFrame, но замораживает поток программы в главном окне до тех пор, пока диалоговое окно больше не будет видно. Как только это произойдет, выполнение программы возобновится в основной программе, и вы сможете запросить данные, хранящиеся в диалоговом окне, и использовать эти данные для обновления JTable.
  • Еще один более сложный вариант — сделать window2 немодальным JDialog, и если вы пойдете по этому пути, вам нужно будет добавить WindowListener (пожалуйста, смотрите ссылку) — я не рекомендую это, если вы можете помочь.
person Hovercraft Full Of Eels    schedule 22.04.2016