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);
    }
}