我在组件上有一个Java MouseListener来检测鼠标按下。如何判断鼠标按哪个显示器?
I have a Java MouseListener on a component to detect mouse presses. How can I tell which monitor the mouse press occurred in?
@Override public void mousePressed(MouseEvent e) { // I want to make something happen on the monitor the user clicked in }我想要实现的效果是:当用户在我的应用程序中按下鼠标按钮时,弹出窗口会显示一些信息,直到鼠标被释放。我想确保此窗口位于用户点击的位置,但我需要调整当前屏幕上的窗口位置,以便整个窗口可见。
The effect I'm trying to achieve is: when the user presses the mouse button in my app, a popup window shows some info, until the mouse is released. I want to ensure this window is positioned where the user clicks, but I need to adjust the window position on the current screen so that the entire window is visible.
推荐答案您可以从 java.awt.GraphicsEnvironment 。您可以使用它来获取有关本地系统的信息。包括每个监视器的边界。
You can get display information from java.awt.GraphicsEnvironment. You can use this to get a information about your local system. Including the bounds of each monitor.
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 ...更多推荐
如何确定Swing鼠标事件发生在哪个监视器?
发布评论