В настоящее время я программирую виртуальную клавиатуру с помощью java. Как вы знаете, когда пользователь нажимает кнопки на моей виртуальной клавиатуре, текст появляется в некоторых других окнах (например, в текстовом документе). Итак, как я могу это сделать? или быть более четким, как изменить окно-в-фокусе, когда пользователь нажимает кнопку и позволяет тексту появляться в документе слова? Спасибо!Изменение сфокусированного окна с помощью java
0
A
ответ
0
Надеюсь, что ниже пример поможет вам развить клавиатуру. Несколько пунктов: 1. Используется JWindow
, а не JFrame
или любой другой фрейм, чтобы избежать проблем с фокусировкой. 2. Используется робот для передачи события нажатия клавиши на активный курсор.
Run ниже приложения, и убедитесь, что курсор находится на TextPad, нажмите кнопку на окне, характер а вставляется в позиции курсора:
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);
}
}