2016-07-07 5 views
0

Я создаю это всплывающее приложение для изучения новых языков, которое, если пользователь найдет неизвестное слово, может просто нажать любую клавишу клавиатуры (например, alt + p), чтобы приложение всплывало и позволяло ему вставлять новое словооткрытое приложение с нажатием клавиши

и для того, чтобы сделать ключ GET выслушал из любой точки я кодируюсь следующий

public class IsKeyPressed extends JFrame implements KeyListener { 
public IsKeyPressed() { 
    this.setExtendedState(MAXIMIZED_BOTH); 
    this.setUndecorated(true); 
    this.setBackground(new Color(0, 0, 0, 0)); 
    this.addKeyListener(this); 
    this.setAlwaysOnTop(true); 
    this.setVisible(true); 
    while (true) { 
     this.toFront(); 
     this.requestFocus(); 
     this.repaint(); 
    } 
} 

public static void main(String[] args) { 
    new IsKeyPressed(); 
} 

@Override 
public void keyPressed(KeyEvent ke) { 

    //open the pop up application 
} 

но это не только нормально работать, если кадр сфокусирован из панели задач поэтому в основном это Безразлично ` работы

любая идея, как исправить? благодаря!

ответ

4

но это не только нормально работать, если кадр сфокусирован из панели задач так в основном это Безразлично `работать

любая идея, как это исправить?

Не с ядром Java, это точно. Вы спрашиваете, как создать общий прослушиватель ключей, который работает, даже если приложение не имеет фокуса, и это то, что ядра Java GUI-библиотеки не могут делать сами по себе, по той причине, что эта функция потребует кодер, чтобы приблизиться к ОС, чтобы делать вызовы, специфичные для ОС, и Java был построен как возможно более агрегированный по ОС.

Так возможные решения включают

  • написания собственных процедур ОС в C и зацеплении их с помощью программы Java с использованием JNI
  • написания подпрограмм OS Java с использованием ЮНА
  • Or (мой любимый) использовать ОС например, Auto-It для Windows, чтобы захватить нажатие клавиши и оживить вашу программу, а затем объединить ее с вашей программой через потоки. ?
+0

ISN 'в любом случае вокруг него .. как grapping фокус для кадра каждый раз это потерять .. , потому что я не мог нашел ничего, что может GRAP фокус для кадра –

+1

@KareemElsayed:? Что бы ужасное решение, если это было возможно, но, к счастью, это невозможно. –

+0

поэтому инструменты не будут полезны для распространения моего приложения, единственный способ - использовать C, я думаю ... можете ли вы дать мне любую вещь, которую я могу найти, поскольку я ничего не знаю в C –

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