2013-09-10 2 views
0

Тесное ярлык по умолчанию (Cmd + д на Mac) не работает по этой программе я закодированной в Java, вы знаете, почему?По умолчанию близко ярлык не работает

Я абсолютный новичок и был бы рад, если бы вы помогли мне!

Код:

public static void main(String[] args) throws IOException, AWTException{ 

    final Robot robot = new Robot(); 

    robot.delay(2000); 

    while(true) 
    { 
     { 
     robot.mousePress(InputEvent.BUTTON1_MASK); 
     robot.mouseRelease(InputEvent.BUTTON1_MASK); 

     robot.delay(50); 
     } 
    } 
} 

} 

ответ

0

Это было бы потому, что Java пытается быть кросс-платформенные (или независимой от платформы), как это может быть. Вы можете сделать свой собственный закрывающий ярлык, используя класс Key, описанный в предыдущих вопросах (в частности: How to cast a keyboard event). Тем не менее, я не думаю, что вы могли бы обнаружить специальные ключи для Mac, если вы не погрузитесь в JNI (Java Native Interface), но если вы новичок, я бы не рекомендовал его пока.

Например, говорят, что вы хотели бы ярлык быть CTRL +Q. Добавить еще одно поле в Key классе:

private boolean ctrlPressed = false; 

Тогда сделайте насущную проверку:

@Override 
public void keyPressed(KeyEvent e) 
{ 
    //Previous code 


    if(e.getKeyCode() == KeyEvent.VK_CONTROL) 
    { 
     ctrlPressed = true; 
    } 
} 

@Override 
public void keyReleased(KeyEvent e) 
{ 
    //Previous code 


    if(e.getKeyCode() == KeyEvent.VK_CONTROL) 
    { 
     ctrlPressed = false; 
    } 
} 

И, наконец, Q часть:

@Override 
public void keyTyped(KeyEvent e) 
{ 
    if(e.getKeyCode() == KeyEvent.VK_Q && ctrlPressed) 
    System.exit(0); 
} 
+0

если добавить добротность часть в внутренний класс Key проверяет это автоматически или мне нужно добавить что-то, что вызывает его в цикле while (true)? – doory

+0

Он проверяет «автоматически», да, потому что он вызван потоком AWT, вам ничего не нужно делать, просто подключите свой объект Key к вашему объекту JFrame. –

+0

ok, спасибо ^^ – doory

Смежные вопросы