2011-11-11 4 views
0

私は、私は今LoginListenerと呼ばれるのactionListenerクラスにこのフレームを渡す必要があるが、私にそれを行うために、変数JFrameを通過するJavaは受け入れ可能ですか?

JFrame frame = this; 

に割り当てる...

をJFrameのを拡張するクラスを持っています> applogと - だから、それはフレームを拡張するこの

クラスのようなものだ

ことがJPanelのを拡張し、このクラスがLoginListenerのインスタンス(情報、サインイン、フレーム)を持つファーストクラスのAppLoginComponentsにそれを渡す必要がありますinComponents - > LoginListener

私がこれをやっているのは、ユーザーが2分以内にログインしていなければ、LoginListenerはアプリケーションを終了する必要があるからです。私はフレームを処分するつもりです。私は静的変数は理想的ではないと思いますか?

答えて

2

いいえ、静的変数は使用しないでください。はい、参照を渡すのは大丈夫です。 SwingUtilityメソッド(getWindowAncestor(Component c))を使用して、含まれているトップレベルウィンドウへの参照を取得することもできます。

しかし、これが質問を呼び起こします。なぜクラスがJFrameを拡張するのですか? JFrameのメソッドをオーバーライドしていますか?

+0

add、setSize、setVisibleおよびpackメソッドをオーバーライドするだけです。私はgetWindowAncestorについて知りませんでした。ありがとう! – unleashed

+0

参照を渡すか、SwingUtilityのgetWindowAncestorを使用することをお勧めしますか? – unleashed

+0

クラスのコンストラクタで単純に呼び出すのではなく、実際にこれらのメソッドをオーバーライドしていますか?私はどちらが正直であることが好ましいかわからない。 GUIがレンダリングされる前にgetWindowAncestorを呼び出すことはできないと思います。トップレベルウィンドウで呼び出されるpack()またはsetVisible(true)です。それ以外の場合はnullが返されます。 –

関連する問題