我有一个需要被带到前台的Java应用程序,你必须能够按键。
我想到了一个计时器。这就像你可以玩游戏并按下一些键,计时器就会计算在内。我有这个
@Override
public void focusLost(FocusEvent arg0) {
System.out.println("Lost");
TimerFrame.toFront();
TimerFrame.requestFocus();
}
它在任务栏中闪烁,并没有一直聚焦。
答案 0 :(得分:1)
您无法可靠地执行此操作,因为它被窗口管理器视为恶意行为。
有各种各样的crapware正在那个,所以在某些时候(从WindowsXP IIRC开始),一些额外的检查被添加到窗口系统,以防止弹出窗口窃取输入焦点。
虽然您可能会找到解决窗口管理器中当前限制的方法,但如果该“功能”除了烦人的用户之外还能完成任何其他操作,您应该认为 hard 。
这是这种完美的例子:Frame always on top of my program only