2016-07-07 6 views
0

私はこの新しいポップアップを構築しています。ユーザーが不明な単語を見つけた場合、単にキーボードのキー(alt + pなど)を押すだけで、アプリケーションがポップアップして挿入できるようになります新しい単語キーを押してアプリケーションを開く

とキー取得を行うためには、私は、次の

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 
} 

をコード化されたが、フレームがそのように基本的にタスクバー から集中している場合にのみ正常に動作しない、どこからでも耳を傾けdoesnの `t仕事

どのように修正するか?ありがとう!

答えて

4

が、フレームがそのように基本的には

に修正するためにどのように任意のアイデアを仕事doesnの `tタスクバーから集中している場合にのみ正常に動作しますか?

確かにコアJavaはありません。アプリケーションにフォーカスがなくても動作する一般的なキー・リスナーを作成する方法を尋ねていますが、これはコアJava GUIライブラリーが独自に行うことができないものです。 OS固有の呼び出しを行うためにOSに近づくためのコーダー、Javaは可能な限りOSに依存しないように構築されています。

だから、可能な解決策は、OSを使用

  • はCで独自のOSのルーチンを作成し、JNA
  • か(私のお気に入り)を使用してJava OSルーチンを書いJNI
  • を使用して、Javaプログラムでそれらを噛み合い含まAuto-It for Windowsのような特定のツールを使用して、キーを取得してプログラムを復活させ、ストリームを介してプログラムとメッシングすることができます。
+0

その周りとにかくisn't .. それはそれを失うフレーム毎回のために焦点をのgrappingのような.. 私は@KareemElsayedフレーム –

+1

ために焦点をGRAPことができたものcouldntのため:??だろうが可能であれば恐ろしい解決策ですが、ありがたいことに、それは不可能です。 –

+0

ツールは私のアプリケーションを広げるのには役に立たない、唯一の方法はCを使っていることだと思う...私はC言語で何も知りませんので、私が探すことができるものを私に与えることができます –

関連する問題