2017-12-31 143 views
2

그래서 저는 java로 프로그램을 작성하고 있습니다. 키보드 입력 언어를 히브리어로 변경하고 'ת'키를 쓰면 글자를 누르는 것을 시뮬레이트하려고 할 때 'ת'키를 누르면됩니다. ','(때때로), 왜? 어떻게 'ת'문자를 쓰려고 고칠 수 있습니까?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 (난 필요도 나던 작업처럼 ..)

내 운영 체제 : Windows 10를.

도와주세요.

감사합니다.

+0

당신이 만약을 시도하십시오 [ASCII 표] (http://www.asciichars.com/_site_media/ascii/ascii-chars-landscape.jpg)를 보면 ','값이 0x2C이므로 인쇄됩니다. –

+0

O.k, 'ת'문자를 삽입 할 수 있도록 'ת'키를 어떻게 시뮬레이션합니까? –

답변

0

나는이 질문에 대한 답을 발견하고 상부 대답에 약간의 솔루션이 될 것 같다 ...

How to make the Java.awt.Robot type unicode characters? (Is it possible?)

이 (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); 
    } 
} 
+0

자바 프로그램의 윈도우 내부와 외부 (실제로 필요한 것 - 바깥 쪽)는 실제로 훌륭합니다. 실제로 이런 식으로 많은 문자를 입력 할 수 있습니다. 그런데 'ת'문자의 핵심 코드 (답장에서 링크 한 프로그램에 따라)는 250 (십진수)입니다. 대단히 감사합니다! –

+0

당신을 진심으로 환영합니다. –