当前位置: 首页 > 面试题库 >

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

卢皓轩
2023-03-14
问题内容

我在组件上有一个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对象,有没有办法告诉哪个线程(或null)当前 拥有其监视器?或者至少是一种方法来判断当前线程是否拥有它? 问题答案: 我自己找到了一些答案。要测试当前线程是否拥有 监视器,是否 存在! exists! 这确实非常快(亚微秒),并且从1.4开始就可用。 通常,要测试哪个线程(或线程ID)持有该锁,可以 对 classes (thanks @amicngh). 有一些注意事项

  • 问题内容: 有谁知道如何设置可触发PMU通过以下方式监视多个(类型)事件的结构? 像一样,它具有两种不同的事件类型(PERF_TYPE_HARDWARE和PERF_TYPE_SOFTWARE),但是在perf_event_open的联机帮助页上的示例中,只能分配单个值。 任何建议将不胜感激,谢谢! 20170208更新 感谢@gudok为我指明方向,但结果似乎有些异常。如下所示的演示程序(用于测量

  • 我感觉不到菜单项的点击。我需要创建一个行,当'Road'menuItem是在创建菜单上点击,但什么都没有发生,当我点击它。 而这是我将在鼠标侦听器中使用它的对象来创建行的类。

  • 我正在尝试确定在一个等距2D游戏中鼠标位于哪个精灵上方。我认为我的最佳选择是将每个精灵绘制成不同的颜色,并将其转换为纹理2D,此时我可以从鼠标点获取颜色数据,并对照绘制的精灵进行检查。 但是,这种方法存在的问题是,我无法将单个精灵的颜色更改为纯色。如果我更改了spriteBatch中的颜色。绘制调用,它只着色精灵的颜色,而不是以纯色绘制,因此我从纹理中检索的数据没有帮助。 在用纯色绘制这些精灵方面

  • 本节,我们将进入Events类的重点部分:定义区域,并为它们添加事件监听器。我们将绘制一个三角形,并附加mouseout和mousemove事件,再绘制一个矩形,没有事件监听器,最后绘制一个圆形,并附加mouseover、mouseout、 mousedown和mouseup来测试Events所支持的每一个桌面事件。 图6-2 添加鼠标事件监听器 操作步骤 按照以下步骤,绘制一个三角形、一个矩形和

  • 在本章中,我们将详细介绍鼠标事件及其属性。 请注意:此类事件不仅可能来自于“鼠标设备”,还可能来自于对此类操作进行了模拟以实现兼容性的其他设备,例如手机和平板电脑。 鼠标事件类型 我们已经见过了其中一些事件: mousedown/mouseup 在元素上点击/释放鼠标按钮。 mouseover/mouseout 鼠标指针从一个元素上移入/移出。 mousemove 鼠标在元素上的每个移动都会触发此