プロジェクトで使用する Java AWT ロボット用の別のクラスを作成しようとしていますが、オンラインで見つけたすべての例がコードを単一の .java ファイルにパックしているように見えるため、希望どおりに設定するのに問題があります。 .
私のコードは正常に動作しますが、関数をより適切な方法でセットアップできるかどうか疑問に思っています。
RobotLib.java クラスのコードは次のとおりです。
package com.z;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class RobotLib {
private static Robot robot;
// Press Function
public void Press(int key, int time){
try {
Robot robot = new Robot();
robot.keyPress(key);
robot.delay(time);
robot.keyRelease(key);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
私の Example.java コードは次のとおりです。
package com.z;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Example {
public static void main(String[] args) {
RobotLib robot = new RobotLib();
robot.Press(KeyEvent.VK_A,100); // type a
}
}
RobotLib.java クラスでは、関数を try/catch と new Robot() でラップせずに使用できるかどうか疑問に思っていたので、上記のバージョンの代わりに次のようになります。
public void Press(int key, int time){
robot.keyPress(key);
robot.delay(time);
robot.keyRelease(key);
}
ただし、try/catch と new Robot() が必要なようです。これらを取り除くと、次のようなエラーが発生します。
Exception in thread "main" java.lang.NullPointerException
at com.z.RobotLib.Press(RobotLib.java:35)
at com.z.Example.main(Example.java:14)
私はJavaコーディングにまったく慣れていないので、クラスを間違った方法で設定している可能性があります。そのエラーを修正する方法や、必要な機能を持つ方法はありますか?