获取Java中的当前显示大小

时间:2015-09-14 08:18:05

标签: java swing

我想获得窗口当前所在屏幕的分辨率。因此,如果我将窗口从一个显示器拖动到另一个显示器,使用不同的分辨率,应用程序应该能够更改。

我在运行连接到外部屏幕的ubuntu gnome的thinkpad上运行它。

这是我目前的尝试:

import java.awt.Dimension;
import java.awt.DisplayMode;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class sizetest {

   void run() {
      Display display = new Display();
      Shell shell = new Shell(display);
      shell.setText("sizetest");
      shell.pack();
      shell.open();

      while (!shell.isDisposed()) {
         DisplayMode mode = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDisplayMode();
         System.out.println(String.format("Current environment screensize: %s, %s", mode.getWidth(), mode.getHeight()));
         Dimension current = Toolkit.getDefaultToolkit().getScreenSize();
         System.out.println(String.format("Current toolkit screensize: %s, %s", current.getWidth(), current.getHeight()));
         Rectangle bounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getBounds();
         System.out.println(String.format("Bounds %s, %s", bounds.width, bounds.height));
         if (!display.readAndDispatch()) {
            display.sleep();
         }
      }
      display.dispose();
   }

   public static void main(String[] args) {
      sizetest o = new sizetest();
      o.run();
   }
}

输出

Current environment screensize: 1920, 1080
Current toolkit screensize: 3840.0, 3240.0 
Bounds 1920, 1080

当我将窗口从一个屏幕移动到另一个屏幕时,它们都没有改变。

1 个答案:

答案 0 :(得分:-2)

这里可以使用多监视器环境使用

  

GraphicsEnvironment.getLocalGraphicsEnvironment()getScreenDevices();

或者代码下面的代码将为您提供默认的显示器分辨率。 希望它有所帮助。

 GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
     int width = gd.getDisplayMode().getWidth();
            int height = gd.getDisplayMode().getHeight();
            System.out.println(width);