java - 如何在 Java 中激活窗口?

标签 java swing

我想以编程方式激活我的 Swing 应用程序。我的意思是我想编写使 JFrame 可见和聚焦的代码(窗口标题应突出显示)。 我尝试使用 requestFocus()。它仅在应用程序至少有 2 个窗口 A 和 B 时有效:A 隐藏,B 可见。现在,如果我调用 A.requestFocus(),它会根据需要激活。如果应用程序只有一个窗口或两个窗口都不可见,则不会发生这种情况。

我找到了 2 个解决方法。

  1. 使用始终位于顶部的假透明未装饰框架。这个假窗口将扮演窗口 B 的角色。我没有尝试实现它,但它似乎应该可以工作。
  2. 调用A.setAlwaysOnTop(true)。这会将窗口 A 置于其他窗口之上。但它还没有成为焦点。使用 java.awt.Robot(mouseMove、mousePress、mouseRelease)点击窗口 A 的标题。 现在调用 A.setAlwaysOnTop(false) 并将鼠标指针返回到之前的位置。 我实现了代码并且它可以工作,但它看起来像一个丑陋的解决方法。

是否有“正确”的解决方案?

最佳答案

frame.setState(Frame.NORMAL); // restores minimized windows
frame.toFront(); // brings to front without needing to setAlwaysOnTop
frame.requestFocus();

有关您可能想知道的所有详细信息,请参阅此页面:http://www.developer.com/java/other/article.php/3502181/Window-Focus-and-State-in-Java.htm

关于java - 如何在 Java 中激活窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005491/

相关文章:

java - JSF:在 Action 方法中返回 null 仅刷新输入文本,但不刷新组合框

java - scala 计算读取文件中包含的列表中的字符串

java - 创建 isValid 方法

java - 如何在 Java 中对文件中的数据进行排序?

java - "overridden method does not throw Exception"?

Java Graphics2D 绘图字符串

java - 如何创建具有光泽颜色的 JMenuBar?

java - 复制康威生命游戏的尝试无法扩展或正常运行

java - 如何更改 JTable 中包含列的行?

java - 数据库数据没有填入 JTable