I know, that this question appears quite frequently in SO like here: but I would like to present some very specific example... I'm simply not sure if I make things right.
I've got a JDialog in which I can type some values, select some checkboxes... whatever... I've got also some Response object created in MyDialog which represents the MyDialog's "answer".
In JFrame which calls/creates JDialog:
MyDialog d = new MyDialog(this, ...);
d.showDialog();
// After MyDialog is closed (it's modal):
MyDialog.Response dialogResponse = d.getDialogResponse();
// Do something with response...
In Dialog (dialog can be closed by clicking "Save" button):
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
}
});
My question is:
This solution works, I mean, the line MyDialog.Response dialogResponse = d.getDialogResponse();
returns proper values, but...
if I close the dialog using dispose(), all dialog's resources can be garbage collected (don't have to... hard to predict, am I right?). So is it correct to retrieve my dialog's response it that way... Maybe in this case I should write only setVisible(false);
without dispose()
.