0

アプリケーションが他のアプリケーションのフォーカスを失うことがないようにするルーチンを実装する必要があります (ただし、最小化されている場合は、強制的に元に戻す必要はありません)。そこで、メイン ウィンドウに WindowFocusListener を実装することにしました。

public class DialogoPrincipal extends JFrame implements WindowFocusListener {

    public DialogoPrincipal() {
        initComponents();
        this.addWindowFocusListener(this);
    }

    @Override
    public void windowGainedFocus(WindowEvent e) {
        //Do nothing
    }

    @Override
    public void windowLostFocus(WindowEvent e) {
        this.toFront();
    }

    /*hidden code*/
}

メインウィンドウにサブウィンドウが表示されない場合に最適です。しかし、いくつかのサブウィンドウが開いているとき、アプリケーションにフォーカスを強制することはできません。アプリケーションにサブウィンドウがある場合や、すべてのダイアログに WindowFocusListener を実装する必要がある場合でも、アプリケーションにフォーカスを強制する方法はありますか? このインターフェースを実装する必要がある場合、JOptionPane.showMessageDialog(...) がフォーカスを失わないようにするにはどうすればよいですか?

4

2 に答える 2

3
于 2013-01-04T13:27:20.827 に答える
0

すべてのサブウィンドウに継承される抽象クラスを実装して解決しました。

public abstract class DialogoFocado extends JDialog implements WindowFocusListener {

    public DialogoFocado(Frame owner) {
        super(owner);
        this.addWindowFocusListener(this);
    }

    @Override
    public void windowGainedFocus(WindowEvent e) {
    }

    @Override
    public void windowLostFocus(WindowEvent e) {
        this.toFront();
    }
}
于 2013-01-05T18:05:45.107 に答える