10

マウスの押下を検出するコンポーネントに Java MouseListener があります。マウスが押されたモニターを確認するにはどうすればよいですか?

@Override
public void mousePressed(MouseEvent e) {
  // I want to make something happen on the monitor the user clicked in
}

私が達成しようとしている効果は、ユーザーがアプリでマウス ボタンを押すと、マウスが離されるまでポップアップ ウィンドウに情報が表示されることです。このウィンドウがユーザーがクリックした場所に配置されるようにしたいのですが、ウィンドウ全体が表示されるように現在の画面のウィンドウの位置を調整する必要があります。

4

4 に答える 4

14

java.awt.GraphicsEnvironmentから表示情報を取得できます。これを使用して、ローカル システムに関する情報を取得できます。各モニターの境界を含みます。

Point point = event.getPoint();

GraphicsEnvironment e 
     = GraphicsEnvironment.getLocalGraphicsEnvironment();

GraphicsDevice[] devices = e.getScreenDevices();

Rectangle displayBounds = null;

//now get the configurations for each device
for (GraphicsDevice device: devices) { 

    GraphicsConfiguration[] configurations =
        device.getConfigurations();
    for (GraphicsConfiguration config: configurations) {
        Rectangle gcBounds = config.getBounds();

        if(gcBounds.contains(point)) {
            displayBounds = gcBounds;
        }
    }
}

if(displayBounds == null) {
    //not found, get the bounds for the default display
    GraphicsDevice device = e.getDefaultScreenDevice();

    displayBounds =device.getDefaultConfiguration().getBounds();
}
//do something with the bounds
...
于 2009-08-08T09:57:44.360 に答える
1

Java 1.6 以降では getLocationOnScreen を使用できますが、以前のバージョンでは、イベントを生成したコンポーネントの場所を取得する必要があります。

Point loc;
// in Java 1.6
loc = e.getLocationOnScreen();
// in Java 1.5 or previous
loc = e.getComponent().getLocationOnScreen();

画面の境界を取得するには、GraphicsEnvironment クラスを使用する必要があります。

于 2009-08-08T10:16:20.267 に答える
0

多分 e.getLocationOnScreen(); 動作します?Java 1.6専用です。

于 2009-08-08T10:03:39.840 に答える