java – 如何确定Swing鼠标事件发生在哪个监视器?

前端之家收集整理的这篇文章主要介绍了java – 如何确定Swing鼠标事件发生在哪个监视器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在组件上有一个 Java MouseListener来检测鼠标按压.如何知道鼠标按下哪个显示器?
@Override
public void mousePressed(MouseEvent e) {
  // I want to make something happen on the monitor the user clicked in
}

我试图实现的效果是:当用户在我的应用程序中按下鼠标按钮时,弹出窗口会显示一些信息,直到鼠标释放.我想确保这个窗口位于用户点击的位置,但是我需要调整当前屏幕上的窗口位置,以便整个窗口可见.

解决方法

您可以从 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
...

猜你在找的Java相关文章