Java 在应用程序中保持焦点,即使它有子窗口
我需要实现一个例程,确保应用程序永远不会失去对其他应用程序的关注(但是当它最小化时,我不应该强制它返回)。因此我决定在主窗口中实现WindowFocusListener:Java 在应用程序中保持焦点,即使它有子窗口,java,swing,focus,focuslistener,Java,Swing,Focus,Focuslistener,我需要实现一个例程,确保应用程序永远不会失去对其他应用程序的关注(但是当它最小化时,我不应该强制它返回)。因此我决定在主窗口中实现WindowFocusListener: public class DialogoPrincipal extends JFrame implements WindowFocusListener { public DialogoPrincipal() { initComponents(); this.addWindowFocus
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(…)做些什么?不要失去对它的关注?- 由于无法正确维护,dirty hack必须将
添加到JFrames
,该数组提供two\u Dimensional array
,并且具有FocusAnswery
正确的顺序
是简单的focuswhich
,因为它基于来自asynchronous
本机操作系统的属性,必须延迟
内部的focuswhich
调用器
- 的逻辑可用于适当的容器层次结构
&JFrame
JDialog
- 使用,然后可以将
返回到焦点
父级
- 由于无法正确维护,dirty hack必须将
添加到JFrames
,该数组提供two\u Dimensional array
,并且具有FocusAnswery
正确的顺序
是简单的focuswhich
,因为它基于来自asynchronous
本机操作系统的属性,必须延迟
内部的focuswhich
调用器
- 的逻辑可用于适当的容器层次结构
&JFrame
JDialog
- 使用,然后可以将
返回到焦点
父级
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();
}
}
我解决了这个问题,实现了一个由所有子窗口继承的抽象类:
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();
}
}
为了更好地帮助您更快地发布一个,大约
JFrame
,两个JDialogs
,使用JButton
调用JOptionPane
,您可以在每个子窗口上调用setFocusableWindowState(false)
。为了更好地帮助您更快发布一个,大约JFrame
,两个JDialogs
通过JButton
调用JOptionPane
,您可以在每个子窗口上调用setFocusableWindowState(false)
。