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