JDialog であるモーダル設定ダイアログがあります。この設定ウィンドウでは、JDialog であるさらに別のモーダル設定ダイアログへのボタンを含むいくつかのコンポーネントを配置しました。私がモーダル ダイアログを作成する唯一の方法を知っているので、それらを JDialogs にしました。
問題は次のとおりです。メイン設定ダイアログを作成するときに、親フレームなしで、または親フレームを使用して JDialog を構築する必要があります。私のメイン ウィンドウは JFrame なので、それをメイン設定ダイアログ コンストラクターに渡すだけです。しかし、メイン設定ダイアログを親として持つ必要がある 2 番目のモーダル設定ダイアログを作成したい場合、JDialog の (J)Frame を取得する方法が見つかりません。そのメイン設定ダイアログを親として渡したいので、2番目の設定ダイアログが表示されたときに中央に表示されます。2 番目の設定ダイアログには、場所を渡すためのコンストラクターがなく、JDialog のコンストラクターだけがあるとします。
JDialog の (J)Frame を取得する方法はありますか? セットアップに設計上の欠陥がありますか?これらの設定ダイアログに別のものを使用する必要がありましたか? (もしそうなら、これらの代替設定ダイアログをモーダルにするにはどうすればよいですか?)
助けてくれてありがとう、エリック
更新: ご回答いただきありがとうございます。彼らは、JDialog の所有者を持つことが絶対に必要なわけではないことを理解させてくれました。ダイアログが閉じられるまで所有者を無効にできるようにするには、これが必要だと思いましたが、どうやらモダリティは所有者から独立しているようです。また、所有者がいても、ダイアログがまだ所有者に集中していないことに気付きました。そのため、私のコードは次のようになります。
public class CustomDialog extends JDialog {
public CustomDialog(String title) {
setModal(true);
setResizable(false);
setTitle(title);
buildGUI();
}
public Result showDialog(Window parent) {
setLocationRelativeTo(parent);
setVisible(true);
return getResult();
}
}
これにより、モーダル ダイアログ内のモーダル ダイアログも可能になります。
ご助力いただきありがとうございます!