私は、この質問がここのように SO で非常に頻繁に現れることを知っています:しかし、私はいくつかの非常に具体的な例を提示したいと思います...私は物事を正しくするかどうかはわかりません.
私はいくつかの値を入力したり、いくつかのチェックボックスを選択したりできる JDialog を持っています。
JDialogを呼び出し/作成するJFrameでは:
MyDialog d = new MyDialog(this, ...);
d.showDialog();
// After MyDialog is closed (it's modal):
MyDialog.Response dialogResponse = d.getDialogResponse();
// Do something with response...
ダイアログ内 (ダイアログは [保存] ボタンをクリックして閉じることができます):
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();
は適切な値を返しますが、... dispose() を使用してダイアログを閉じると、すべてのダイアログのリソースをガベージ コレクションできます (必要はありません... 予測するのは難しいです) 、私は正しいですか?)。それで、ダイアログの応答をそのように取得するのは正しいですか...おそらく、この場合は setVisible(false);
なしでのみ書くべきdispose()
です。