在Mac上使用Java.awt.Robot和keyPress时出现TIS / TSM非主线程错误

时间:2018-12-22 23:48:51

标签: java keypress keyevent robot

我收到错误消息“ 2018-12-22 18:29:09.516 java [17936:299421] pid(17936)/ euid(501)在非主线程环境中调用TIS / TSM,错误:这不是允许。请在主线程中致电TIS / TSM !!!”在我的代码中,如下所示:

    Robot robot = new Robot();
    String string = "hi";
    long mainThreadId = Thread.currentThread().getId();

    for (int i = 0; i < string.length(); i++) {
        char character = string.charAt(i);

        switch (character) {
            case 'h': System.out.println(Thread.currentThread().getId() == mainThreadId); break;
            case 'i': robot.keyPress(KeyEvent.VK_I); break;
        }
    }

您所看到的一切都在main方法中。我在情况“ h”中添加的检查表明,语句期间的当前线程与主线程相同(打印为true)。这是否表示不会发生该错误?编写此代码是为了keyPress给定字符串中的所有字符。我在MacOS Mojave 10.14.2上使用MacBook Pro。

0 个答案:

没有答案