public class MyWindow extends JFrame {
JButton botonCreate = new JButton("Open son windows");
public void doSomething(){
botonCreate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog vce = new JDialog(this);
}
});
}
}
アイデアは、子供が見えるうちにJFrameの親をブロックすることです(JDialog)。このポインタをコンストラクタに渡すときにコンパイラエラーが発生しましたか?
JDialogのコンストラクタのパラメータは、 "MyWindow"というクラスを含む必要がありますが、スコープの問題はActionListenerであり、これは次のエラーを生成します。
これをどのように修正できますか?
エラーメッセージ:
JDialogの() コンストラクタJDialogの(java.awt.Frameの)のために見つかりませ適切なコンストラクタが適用 ません(実引数は、メソッド呼び出しによってjava.awt.Frameのに変換することができません変換) コンストラクタJDialogの(java.awt.Dialog)あなたISS適用 (実引数は、メソッド呼び出し 変換によりjava.awt.Dialogに変換できない)
「JFrame」を拡張するのは本当に悪いことですが、新しい種類のJFrameを作成することはほとんどありませんが、代わりに既存のJFrameを使用したいと考えています。ここでの正しいパターンは、継承ではない構成です。これはまた、問題を完全に回避します。 – Voo