gpt4 book ai didi

java - Java中获取当前显示尺寸

转载 作者:行者123 更新时间:2023-12-02 04:22:48 25 4
gpt4 key购买 nike

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

我在运行 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

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

最佳答案

如果您有 AWT/Swing 窗口,您可以查询其GraphicsConfiguration 来获取您想要的内容。请注意,窗口的不同部分可以同时位于多个显示器上。该方法返回窗口中心所在的显示。这是显示当前显示屏大小的简单组件:

public class TestFrame extends JFrame {
JLabel label = new JLabel();

public TestFrame() {
super("Resolution tracker");
setSize(300, 50);
add(label);
updateResolution();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
updateResolution();
}
});
}

protected void updateResolution() {
DisplayMode mode = this.getGraphicsConfiguration().getDevice().getDisplayMode();
label.setText(mode.getWidth()+" x "+mode.getHeight());
}

public static void main(String args[]) {
new TestFrame().setVisible(true);
}
}

关于java - Java中获取当前显示尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32560147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com