4

私は、単純なタスクの簡単な回避策として、JavaでRobotクラスを何度も使用しました。実行の停止は常に問題です(テスト中に何度も実行する必要があります)。私が欲しいのは、キー/キーの組み合わせをリッスンし、プログラムを停止するKeyListenerです。私の簡単な読みから、フレームなどに焦点が合っていないと、キーリスナーを埋め込むことができないようです。私にとって、フォーカスとは最前線のウィンドウを意味します。これは間違った定義ですか?これが正しい定義である場合、ロボットを持って這い回っているため、ウィンドウの焦点を合わせることができません。どうすればこの問題を解決できますか?

これを入力しているときに、プログラムでウィンドウにフォーカスを合わせ、キー押下をテストしてから、プログラムでウィンドウのフォーカスを外して続行するという、理想的ではないソリューションを思いつきました。これは可能ですか?もっと良い方法はありますか?

4

2 に答える 2

2

どのアプリケーションに焦点が当てられていても、キーをリッスンするグローバルキーリスナーが必要ですか?これは、Robot /pureJavaでは実行できません。

ただし、Windowsで実行している場合は、JNAを使用してこれを行うことができます。JNAのKeyHookの例は良い出発点です。

于 2011-12-06T23:01:16.477 に答える
1

ええと、私はJavaのロボットにあまり精通していませんが、KeyListenerの問題は入力/アクションマップで解決できるかもしれません(ガイドはこちら)。

または、キー押下をテストする代わりに、確認メッセージ( "Continue Roboting?Y / N")を含むJOptionPaneを使用することもできます。それでも最善の解決策ではありません。

于 2011-12-06T22:21:13.437 に答える