为什么当我尝试模拟"ת"按键时,输入字符 'ת'(希伯来语)而不是字母 '?



所以,我正在用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(另外,剂量不像我需要的那样工作..(

我的操作系统:视窗 10。

请帮忙。

谢谢。

我找到了这个问题和答案,顶部答案中似乎有一些解决方案......

如何制作Java.awt.Robot类型的Unicode字符?(可能吗?

请尝试此操作(代码可从 https://github.com/johanwitters/stackoverflow.swing-hebrewkey 获得(

package com.johanw.stackoverflow.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);
    }
}

最新更新