java - 当我尝试模拟“ת”按键时,为什么不输入字母“ת”(希伯来语)而是输入字符“?
java - why instead of letter 'ת' (hebrew) typed the character ', when i trying to simulating the 'ת' key press?
所以,我正在 java 中编写程序,我需要模拟“ת”按键,我将键盘输入语言更改为希伯来语,当我尝试模拟“ת”时' 按下书写字符的键是','(有时),为什么?以及如何修复它以写入“ת”字符?
代码片段:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test extends JFrame{
private static Robot robot;
public static void main(String[] args) {
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
JFrame win = new JFrame();
win.setSize(200,100);
JPanel panel = new JPanel();
JButton button = new JButton("simulate");
final JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(100, 30));
panel.add(textField);
panel.add(button);
win.add(panel);
win.setVisible(true);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.requestFocus();
robot.keyPress(0X2C);
robot.keyRelease(0X2C);
}
});
}
}
我也试过模拟关键代码:KeyEvent.COMMA
(而且,没有像我需要的那样工作..)
我的操作系统:Windows10.
请帮忙。
谢谢。
我找到了这个问题和答案,在最上面的答案中似乎有一些解决方案...
How to make the Java.awt.Robot type unicode characters? (Is it possible?)
请试试这个(代码可从 https://github.com/johanwitters/Whosebug.swing-hebrewkey 获得)
package com.johanw.Whosebug.hebrewkey;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
public class Test extends JFrame{
private static Robot robot;
public static void main(String[] args) {
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
JFrame win = new JFrame();
win.setSize(200,100);
JPanel panel = new JPanel();
JButton button = new JButton("simulate");
final JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(100, 30));
panel.add(textField);
panel.add(button);
win.add(panel);
win.setVisible(true);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.requestFocus();
// pressUnicode(robot,0X5D4);
pressUnicode(robot,0X2C);
/*
robot.keyRelease(0X2C);
robot.keyRelease(0X2C);
*/
}
});
}
public static void pressUnicode(Robot r, int key_code)
{
r.keyPress(KeyEvent.VK_ALT);
for(int i = 3; i >= 0; --i)
{
// extracts a single decade of the key-code and adds
// an offset to get the required VK_NUMPAD key-code
int numpad_kc = key_code / (int) (Math.pow(10, i)) % 10 + KeyEvent.VK_NUMPAD0;
r.keyPress(numpad_kc);
r.keyRelease(numpad_kc);
}
r.keyRelease(KeyEvent.VK_ALT);
}
}
所以,我正在 java 中编写程序,我需要模拟“ת”按键,我将键盘输入语言更改为希伯来语,当我尝试模拟“ת”时' 按下书写字符的键是','(有时),为什么?以及如何修复它以写入“ת”字符?
代码片段:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test extends JFrame{
private static Robot robot;
public static void main(String[] args) {
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
JFrame win = new JFrame();
win.setSize(200,100);
JPanel panel = new JPanel();
JButton button = new JButton("simulate");
final JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(100, 30));
panel.add(textField);
panel.add(button);
win.add(panel);
win.setVisible(true);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.requestFocus();
robot.keyPress(0X2C);
robot.keyRelease(0X2C);
}
});
}
}
我也试过模拟关键代码:KeyEvent.COMMA
(而且,没有像我需要的那样工作..)
我的操作系统:Windows10.
请帮忙。
谢谢。
我找到了这个问题和答案,在最上面的答案中似乎有一些解决方案...
How to make the Java.awt.Robot type unicode characters? (Is it possible?)
请试试这个(代码可从 https://github.com/johanwitters/Whosebug.swing-hebrewkey 获得)
package com.johanw.Whosebug.hebrewkey;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
public class Test extends JFrame{
private static Robot robot;
public static void main(String[] args) {
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
JFrame win = new JFrame();
win.setSize(200,100);
JPanel panel = new JPanel();
JButton button = new JButton("simulate");
final JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(100, 30));
panel.add(textField);
panel.add(button);
win.add(panel);
win.setVisible(true);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.requestFocus();
// pressUnicode(robot,0X5D4);
pressUnicode(robot,0X2C);
/*
robot.keyRelease(0X2C);
robot.keyRelease(0X2C);
*/
}
});
}
public static void pressUnicode(Robot r, int key_code)
{
r.keyPress(KeyEvent.VK_ALT);
for(int i = 3; i >= 0; --i)
{
// extracts a single decade of the key-code and adds
// an offset to get the required VK_NUMPAD key-code
int numpad_kc = key_code / (int) (Math.pow(10, i)) % 10 + KeyEvent.VK_NUMPAD0;
r.keyPress(numpad_kc);
r.keyRelease(numpad_kc);
}
r.keyRelease(KeyEvent.VK_ALT);
}
}