私は概念的な質問があります(いくつかの質問があります) 実際のプロジェクトで説明しましょう。 私はLogin
swing
のフォームを持っていますが、メインの方法があり、ここからアプリケーションが始まります。別のクラスのメソッドとフィールドを別のクラスの中で使用する
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Login().setVisible(true);
}
}); // this method is inside main Method
Login
フォームは、いくつかのTextField
sおよびButton
Sが含まれており、またいくつかのmethods
。 (たとえば、Enter
ボタンを押すと認証とアクションが実行されます) [Enter]ボタンを押すと、認証が成功するとMainTabbedForm
という別のフォームが表示されます。 今質問はObject Oriented Programming
とクラスローディングについてです。 Login
フォームフォームMainTabbedForm
にアクセスします。たとえば、dispose
Login
フォームを認証した後、MainTabbedForm
コンストラクタで正常に処理したいと思っています。 Login
クラスの中にメソッドを書き込んで、MainTabbedFormにログインを接続します。このように:
public void disappearForm(MainTabbedForm form) {
this.form=form; // I already has defined a MainTabbedForm field in top of the Login class
this.dispose(); // Dispose the Login class
}
そしてMainTabbedFormのフィールドとしてログインフォームを宣言するだけで使用する前に、MainTabbedFormのコンストラクタでそれを使用します。
public MainTabbedForm(Login login) {
this.login=login;
login.disappearForm(this)
}
しかし、ログインが初期化されていないため、NullPointExceptionが返されます。 そして、私が新しいクラスのLoginを作成した場合、もちろん、それは新しいクラスであり、私が望むことはしません。なぜなら、新しいインスタンスであり、最初のメソッドではなく、メインメソッドのです。 今、私は質問があります。どうすればこれら2つのクラスをお互いに結びつけることができますか? もちろん私の仕事をする静的な方法を作ることができます!しかし、私はこのようにしたくありません。 私はこのクラスの読み込みと、OSGi
とMVC
のようなフレームワークとデザインパターンをプログラミングしているので、サービスやオブジェクトなどの動的なロードとアクセスを管理するために作成したと思います。 これらの回答への返信は本当に感謝しています!あなたはLogin
で
をあなたは 'MainTabbedForm'から')( '処分呼びたいのはなぜ? 'MainTabbedForm'はどのように作成していますか?なぜそれは 'disappearForm()'メソッドに*自体*への参照も渡すのですか? – David