如何在Java中创建一个普通的静态可聚焦window?
How to create a common static focusable window in Java?
我正在 Java 中创建音译工具。它几乎完成了。
这是截图。
我正在使用 JWindow
作为下拉菜单,出于某种原因它必须是可聚焦的。
因为,用户一次只能写入一个输入。我创建了这个 window
静态,因此所有文本组件都使用相同的实例而不是创建新实例。
当我在多个 window 中工作时出现问题。它工作正常,除非 window 都显示在屏幕上。但是,当此下拉菜单 window 的所有者 window 关闭时,下拉菜单 window 不再可聚焦。
正如 JWindow(Window owner)
构造函数的 Java 文档所说:
Creates a window with the specified owner window. This window will not be focusable unless its owner is showing on the screen. If owner is null, the shared owner will be used and this window will not be focusable.
那么,我如何创建一个 static、focusable window,由不同 windows.
不要使用 JWindow。
相反,您可以使用未修饰的 JDialog。这样就不会有对焦问题了。
编辑:
当您使用如下代码使其可见时,您可以防止对话框最初获得焦点:
dialog.setWindowFocusableState(false);
dialog.setVisible(true);
dialog.setWindowFocusableState(true);
我正在 Java 中创建音译工具。它几乎完成了。 这是截图。
我正在使用 JWindow
作为下拉菜单,出于某种原因它必须是可聚焦的。
因为,用户一次只能写入一个输入。我创建了这个 window
静态,因此所有文本组件都使用相同的实例而不是创建新实例。
当我在多个 window 中工作时出现问题。它工作正常,除非 window 都显示在屏幕上。但是,当此下拉菜单 window 的所有者 window 关闭时,下拉菜单 window 不再可聚焦。
正如 JWindow(Window owner)
构造函数的 Java 文档所说:
Creates a window with the specified owner window. This window will not be focusable unless its owner is showing on the screen. If owner is null, the shared owner will be used and this window will not be focusable.
那么,我如何创建一个 static、focusable window,由不同 windows.
不要使用 JWindow。
相反,您可以使用未修饰的 JDialog。这样就不会有对焦问题了。
编辑:
当您使用如下代码使其可见时,您可以防止对话框最初获得焦点:
dialog.setWindowFocusableState(false);
dialog.setVisible(true);
dialog.setWindowFocusableState(true);