Swingを使用して、ユーザーが画面上の任意の場所をクリックしたときにマウスの座標を取得できるクラスを実装する必要があります。自分のウィンドウ内でマウスの座標を取得しMouseListener
たい場合は、を使用しますが、ユーザーがプログラムの外側をクリックしても機能するようにします。
クラスをKColorChooserと同じように動作させます。ユーザーがドロップボタンをクリックすると、画面上の任意の場所をクリックしてそのスポットの色を取得できます。しかし、純粋なJavaを使用してそれが可能かどうかはわかりません。
制限はありますが可能です:
フォーカスイベントのAWTEventListenerを追加します。ボタンがクリックされる前にアプリにフォーカスがある限り、フォーカスが失われたイベントを受け取ります。次に、ポインタの位置を問い合わせます。
もちろん、制限はアプリがフォーカスを失うことです。したがって、最終的にこれを達成しようとしていることによっては、役に立たない場合があります。
フォーカスを失いたくない場合は、一時的に画面全体のスクリーンショットを撮り、通常どおりマウスのクリックをリッスンする画面入力ウィンドウに表示する必要があります。
最初の方法の証明:
import java.awt.AWTEvent;
import java.awt.MouseInfo;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import javax.swing.JFrame;
public class Application1 {
public static void main(String[] args) {
Toolkit.getDefaultToolkit().addAWTEventListener(
new Listener(), AWTEvent.MOUSE_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static class Listener implements AWTEventListener {
public void eventDispatched(AWTEvent event) {
System.out.print(MouseInfo.getPointerInfo().getLocation() + " | ");
System.out.println(event);
}
}
}
生成されたアプリの外側をクリックすると:
java.awt.Point[x=198,y=59] | java.awt.event.MouseEvent[MOUSE_EXITED, ...
java.awt.Point[x=976,y=503] | java.awt.FocusEvent[FOCUS_LOST, ...
2番目のポイントは、アプリの外です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加