2016-10-07 4 views
0

Javaアプレット(JAppletクラスを使用しています)があり、アプレットウィンドウがアクティブになったときにイベントを取得しようとしています。私はWindowListenerとFocusListenerを実装しようとしましたが、何のイベントも受け取りません。アプレットウィンドウにフォーカスが当てられているかどうかを確認するには何が必要ですか?ここでアプレットのフォーカスイベントまたはウィンドウイベントを受信しない

は私のテストコードです:

public class AppletTest extends JApplet implements WindowListener, FocusListener { 
    public void init() { 
//  addWindowListener(this); // Won't compile 
     addFocusListener(this); 
    } 
    public void actionPerformed(ActionEvent event){ 
     Object source = event.getSource(); 
     String command = event.getActionCommand(); 
    } 

    @Override 
    public void focusGained(FocusEvent e) { 
     System.out.println("focusGained"); 
    } 
    @Override 
    public void focusLost(FocusEvent e) {} 

    @Override 
    public void windowActivated(WindowEvent e) { 
     System.out.println("windowActivated"); 
    } 
    // Stub methods 
    @Override 
    public void windowOpened(WindowEvent e) {} 
    @Override 
    public void windowClosing(WindowEvent e) {} 
    @Override 
    public void windowClosed(WindowEvent e) {} 
    @Override 
    public void windowIconified(WindowEvent e) {} 
    @Override 
    public void windowDeiconified(WindowEvent e) {} 
    @Override 
    public void windowDeactivated(WindowEvent e) {} 
} 

答えて

1

の追加: setFocusable(真の);

をinitメソッドに追加すると問題が解決するはずです。

+0

これは本当に私が尋ねた問題を解決します、ありがとう! –

+0

しかし、私の生産コードでは、かなり複雑ですが、それは必ずしも起動されません。私はまた、私のアプレットにモードレスのJPanelを持っています。それらのJPanelの1つが上にあり、メインのアプレットウィンドウをクリックすると、focusGainedイベントは発生しません。メインアプレットウィンドウがzOrderの最上部に移動したときにイベントを取得する方法はありますか? –

関連する問題