使用java更改聚焦窗口

时间:2016-08-04 09:46:04

标签: java typing virtual-keyboard

我目前正在使用java编写虚拟键盘。如您所知,当用户单击虚拟键盘上的按钮时,文本将出现在其他一些窗口(例如word文档)中。那我怎么能做这个动作呢?或者更清楚一点,当用户点击按钮并让文字出现在word文档中时,如何更改焦点窗口? 谢谢!

1 个答案:

答案 0 :(得分:0)

我希望以下示例可以帮助您开发键盘。几点: 1.使用JWindow而非JFrame或任何其他框架,以避免您的聚焦问题。 2.使用Robot将按键事件转移到活动光标。

运行以下应用程序,确保光标在textpad上,按下窗口上的A按钮,在光标位置插入字符a:

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JWindow;

public class Runningwindow extends JWindow
{
  public static void main(String[] args) throws AWTException
  {
    Runningwindow window = new Runningwindow();
    window.setBackground(Color.RED);
    window.setPreferredSize(new Dimension(200, 200));
    window.setLayout(new FlowLayout());
    JButton button = new JButton("A");
    Robot r = new Robot();
    int keyCode = KeyEvent.VK_A; // the A key
    button.addMouseListener(new MouseAdapter() {

      public void mouseReleased(MouseEvent e)
      {
        r.keyRelease(keyCode);
      }

      public void mousePressed(MouseEvent e)
      {
        r.keyPress(keyCode);
      }
    });
    window.add(button);
    window.pack();
    window.setVisible(true);
  }
}