2017-12-31 242 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(私が必要また、dosen'tの仕事のように...)

マイオペレーションシステム:Windows 10を。

助けてください。

ありがとうございます。

+0

あなたの場合を試してみてください[ASCII Table](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

これは、Javaプログラムのウィンドウの内側と外側(これは私が必要とするもの - 外側)です。実際には、このように多くの文字を入力できます。 ところで、 'ת'文字のキーコード(あなたの返信にリンクしているプログラムによる)は250(10進数)です。 ありがとうございます! –

+0

ようこそ。 –

関連する問題