2017-11-12 27 views
0

私のプログラムでエラーが発生しました。コンパイルエラーではなく、プログラム自体の実行でエラーが発生しました。私のtype()メソッドを呼び出すときに、大文字がない場合(Stringを変更しようとしたとき)にのみStringが型付けされます。文字列の文字の代わりにランダムな文字が入力されています。有用な洞察力、または私が単独ではないことを知ることは、非常に高く評価されます。ありがとうございました!java.awt.Robot keyPress()メソッドが正しく入力されない

import java.awt.AWTException; 
import java.awt.Robot; 
import javax.swing.JOptionPane; 
import java.awt.event.KeyEvent; 
import java.lang.Character; 
import java.lang.IllegalArgumentException; 
public class TicketMaker 
{ 
    public static void main(String[] args) throws InterruptedException 
    { 
     Robot robot = null; 
     String lottoMessage = "Vindex Lotto Ticket # "; 
     JOptionPane.showMessageDialog(null,"Running program", "Ticket Master", JOptionPane.PLAIN_MESSAGE); 
     Thread.sleep(4000); 
     try 
     { 
      robot = new Robot(); 
     } 
     catch(AWTException e) 
     { 
      String err = "Could not instantiate Robot class!"; 
      errprint(err); 
      System.exit(-1); 
     } 


     try 
     { 
      robot.keyPress(KeyEvent.VK_E); //Open book 
      Thread.sleep(2000); 
      type(lottoMessage, robot); 
     } 
     catch(IllegalArgumentException e) 
     { 
      errprint("Could not begin book writing"); 
     } 
    } 
    public static void errprint(String m) 
    { 
     JOptionPane.showMessageDialog(null,"Error! " + m); 
    } 
    public static void type(String toType, Robot robo) 
    { 
     char character; 
     int ascii; 
     int limit = toType.length(); //11 
     int i; 
     for(i = 0; i < limit; i++) 
     { 
      character = toType.charAt(i); 
      ascii = (int)character; 
      robo.keyPress(ascii); 
     } 
    try 
    { 
     Thread.sleep(500); 
    } 
    catch(InterruptedException e) 
    { 
     errprint("Sleep failed!"); 
    } 
    } 
} 

答えて

1

ロボットで大文字を送信する場合は、シフトを入力する必要があります。数字の上にある特殊文字の場合も同様です。ロボットは、自分のキーボードで入力するのとまったく同じように動作します。

robot.keyPress(KeyEvent.VK_SHIFT); 

keyPressを呼び出した後、キーから指を離してシミュレートするためにkeyReleaseを呼び出します。

+0

ありがとうございます!私はそれについてどう思ったかわからない! – Brenann

関連する問題