Я знаю, что этот вопрос появляется довольно часто в SO, как here: , но я хотел бы представить несколько очень конкретных примеров ... Я просто не уверен, что я делаю вещи правильно.Возвращаемая стоимость от JDialog; dispose(), setVisible (false) - пример
У меня есть JDialog, в котором я могу ввести некоторые значения, выбрать некоторые флажки ... независимо ... У меня есть также объект Response, созданный в MyDialog, который представляет собой «ответ» MyDialog.
В JFrame, который вызывает/создает JDialog:
MyDialog d = new MyDialog(this, ...);
d.showDialog();
// After MyDialog is closed (it's modal):
MyDialog.Response dialogResponse = d.getDialogResponse();
// Do something with response...
В Dialog (Диалог можно закрыть, нажав кнопку "Сохранить"):
btnSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialogResponse = prepareResponse(); // prepares response on the basis of some data introduced by a user; dialogResponse is called from JFrame after Dialog is closed
setVisible(false);
dispose(); // <-- Important
}
});
Мой вопрос: Это решение работает, Я имею в виду, что строка MyDialog.Response dialogResponse = d.getDialogResponse();
возвращает правильные значения, но ... , если я закрою диалог с помощью утилиты(), все ресурсы диалога могут быть собраны в мусор (не нужно ... трудно предсказать, правильно?) , Так правильно ли получить ответ моего диалога так? Может быть, в этом случае я должен написать только setVisible(false);
без dispose()
.
Если вам нужно, чтобы ваш 'JDialog' позже не утилизировал его и просто использовал' setVisible (false) ', в противном случае вы можете утилизировать его без каких-либо проблем. – Paniz
Не уверен, что я понимаю, следовательно комментарий, но не может вы удаляете диалог из рамки? – npinti
@ npinti Да, но мне в основном любопытно, могу ли я получить доступ к ответу моего диалога после того, как dispose() вызывается на Dialog –