Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行从JSON读取的事件_Java_String_Execute_Awtrobot - Fatal编程技术网

Java 执行从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 编辑:应该是通用的。用户应该能够指定

我正在从JSON文件中读取两个内容:

actionOnPress:"robot.KeyPress(e)"
(robot是java.awt.robot实例)和

我要执行

robot.KeyPress(KeyEvent.VK_4)
执行此操作的最简单方法是什么(最好不需要下载库)?该代码应该也适用于robot.mousePress和robot.mouseMove等

我已经尝试了ScriptEngine的不同功能,但似乎都不起作用

非常感谢你,Kamik423


编辑:应该是通用的。用户应该能够指定不同的事件,例如robot

Ok,自己解决。代码如下:

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);
    }
}