有什么方法可以调整JavaFX虚拟键盘子窗口的大小吗?
我指的是虚拟键盘属于的阶段作为一个子窗口,因为它是如何在风景视图中被标记的。
我正在开发一个应用程序,专门使用虚拟键盘在Surface3平板上进行文本输入。由于分辨率(2160x1440),键盘的按钮太短,无法可靠地按在Surface的屏幕上,如图所示,将其调整为1920的宽度:http://i.imgur.com/kp65dlm.png:http://i.imgur.com/kp65dlm.png:http://i.imgur.com/kp65dlm.png
应用这种样式可以得到一个需要的按钮高度:
.fxvk {
-fx-cursor: default;
-fx-background-color: linear-gradient(to bottom, rgb(126, 126, 126) 0%, rgb(76, 76, 76) 10%, rgb(84, 84, 84) 100%);
-fx-background-insets: 0,0,0,0;
-fx-padding: 8 4 10 4;
-fx-min-height: 400;
问题在于,包含虚拟键盘的子窗口需要更高,以显示调整后的按钮,见http://i.imgur.com/x5r7feq.png。
我有一个方法来返回对虚拟键盘的引用,这样我就可以在其他控制器中设置一个监听器,以便在VK失去焦点时隐藏它。我尝试调整VK的大小,但无法控制子窗口的属性:
public static PopupWindow getKeyboard() {
@SuppressWarnings("deprecation")
final Iterator<Window> windows = Window.impl_getWindows();
while (windows.hasNext()) {
final Window window = windows.next();
if (window instanceof PopupWindow) {
if (window.getScene() != null && window.getScene().getRoot() != null) {
Parent root = window.getScene().getRoot();
if (root.getChildrenUnmodifiable().size() > 0) {
Node popup = root.getChildrenUnmodifiable().get(0);
if (popup.lookup(".fxvk") != null) {
if (popup instanceof FXVK) {
FXVK keyboard = (FXVK) popup; // reference to the vk skin
keyboard.getScene().heightProperty().add(200); // This increases the height but the vk window does not size to its contents like other windows
PopupWindow test = (PopupWindow) window; // reference to the window with the vk, casted to a PopupWindow
test.getOwnerWindow().setHeight(test.getOwnerWindow().getHeight() + 200); // This increases the height but the vk window does not size to its contents like other windows
return test;
}
}
}
}
return null;
}
}
return null;
}
你就快到了。
如果在GetPopupWindow()
中更改键盘的高度:
if(popup.lookup(".fxvk")!=null){
FXVK vk = (FXVK)popup.lookup(".fxvk");
vk.setMinHeight(400);
return (PopupWindow)window;
}
有了弹出窗口的实例后,只需调用setautofix(true)
:
PopupWindow keyboard=getPopupWindow();
keyboard.setAutoFix(true);
http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/embedd.htm 有没有人在javafx应用程序中有过虚拟键盘的经验?我需要能够显示正常的键盘或数字键盘时,文本字段是聚焦的。
我想永远不要像以编程方式显示/隐藏虚拟键盘一样隐藏虚拟键盘 或者(如果上面所说的不可能的话) 我想从虚拟键盘移除/隐藏/禁用下面(突出显示的绿色左下角)按钮。 在任何情况下都不要隐藏键盘,除非程序没有终止。 代码:你也可以在github上查看我的代码。
null
null 在当前的系统配置中,有没有办法在我的触摸监视器上显示虚拟键盘?例如,告诉键盘它的所有者应用程序在哪里,以便它在正确的监视器上显示?
我用JavaFX设计了一个简单的虚拟键盘,用于一个刽子手风格的游戏。唯一的问题是,我无法获得正确的第二行和第三行的对齐方式,就像真正的键盘设计一样(例如,a键几乎在Q键和W键之间)。 键盘只是使用实现的,网格窗格中每个字符都有一个按钮。 有没有办法插入一点空白?我真的想过堆叠三个,每行一个,然后添加正确的偏移量作为空白文本,但这在我看来有点勉强,所以我想知道是否有一种“更干净”的方法。 以下是我的