我为我的公司在 SWT 和 AWT 中实现了 OSK。
我们使用 ini 文件初始化 OSk 布局,您可以定义键盘布局(大小、字体、键盘线的外观、按键标签和按键操作)
首先你应该生成读取这些ini 文件的键盘。这完成得非常快。您应该在创建的按钮和顶部窗口上启用焦点。否则,获取关键操作的组件将始终失去焦点。
第二步是实现事件调度管理器。您必须将 OSK 按键事件发送到所有侦听事件对象。您可以使用Robot发送事件,或者使用FocusManager获取焦点组件并直接将其设置。
对于 SWT,它工作得很好,但在 AWT 中,它们存在一些线程和焦点问题。