Java 执行从JSON读取的事件
我正在从JSON文件中读取两个内容:Java 执行从JSON读取的事件,java,string,execute,awtrobot,Java,String,Execute,Awtrobot,我正在从JSON文件中读取两个内容: actionOnPress:"robot.KeyPress(e)" (robot是java.awt.robot实例)和 我要执行 robot.KeyPress(KeyEvent.VK_4) 执行此操作的最简单方法是什么(最好不需要下载库)?该代码应该也适用于robot.mousePress和robot.mouseMove等 我已经尝试了ScriptEngine的不同功能,但似乎都不起作用 非常感谢你,Kamik423 编辑:应该是通用的。用户应该能够指定
actionOnPress:"robot.KeyPress(e)"
(robot是java.awt.robot实例)和
我要执行
robot.KeyPress(KeyEvent.VK_4)
执行此操作的最简单方法是什么(最好不需要下载库)?该代码应该也适用于robot.mousePress和robot.mouseMove等
我已经尝试了ScriptEngine的不同功能,但似乎都不起作用
非常感谢你,Kamik423
编辑:应该是通用的。用户应该能够指定不同的事件,例如robotOk,自己解决。代码如下:
package test;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class executor extends JFrame {
String import1 = "java.awt.Robot";
String import2 = "java.awt.event.KeyEvent";
String setup1 = "r = new Robot";
String executionType = "r.keyPress(event)";
String event = "KeyEvent.VK_4";
private JTextField textField;
static ScriptEngineManager manager = new ScriptEngineManager();
static ScriptEngine engine = manager.getEngineByName("JavaScript");
public executor() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,100,100);
textField = new JTextField();
textField.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent ev) {
try {
engine.eval("importClass(" + import1 + ")");
engine.eval("importClass(" + import2 + ")");
engine.eval(setup1);
engine.eval(executionType.replaceAll("event", event));
} catch (ScriptException e) {
e.printStackTrace();
}
}
});
getContentPane().add(textField, BorderLayout.CENTER);
textField.setColumns(10);
}
public static void main(String[] args) {
executor ex = new executor();
ex.setVisible(true);
}
}
package test;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class executor extends JFrame {
String import1 = "java.awt.Robot";
String import2 = "java.awt.event.KeyEvent";
String setup1 = "r = new Robot";
String executionType = "r.keyPress(event)";
String event = "KeyEvent.VK_4";
private JTextField textField;
static ScriptEngineManager manager = new ScriptEngineManager();
static ScriptEngine engine = manager.getEngineByName("JavaScript");
public executor() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,100,100);
textField = new JTextField();
textField.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent ev) {
try {
engine.eval("importClass(" + import1 + ")");
engine.eval("importClass(" + import2 + ")");
engine.eval(setup1);
engine.eval(executionType.replaceAll("event", event));
} catch (ScriptException e) {
e.printStackTrace();
}
}
});
getContentPane().add(textField, BorderLayout.CENTER);
textField.setColumns(10);
}
public static void main(String[] args) {
executor ex = new executor();
ex.setVisible(true);
}
}