Java中如何检测Windows字体大小(100%、125%、150%)

mo49yndu  于 2023-09-29  发布在  Java
关注(0)|答案(3)|浏览(127)

我使用的是一个swt对话框,如果我将字体大小(控制面板->显示)从小(100%)到大(150%)增加,控件就会从屏幕上断开。
1.可滚动复合或
1.调整控件大小或字体大小(如果窗口大小已更改为更大)。
对于第2点,我无法获得当前的Windows大小。如果我得到了,这个问题就可以解决了,因为滚动组合不适合较小的尺寸。

flvlnr44

flvlnr441#

我是这样做的:

Display.getCurrent().getDPI().x

这里,基于返回值(96、120或144),可以分别确定大小是100%、125%还是150

yhxst69z

yhxst69z2#

我知道这是一个老问题,但它仍然是一个实际的问题,答案是不工作与windows 10,其中的比例可以在每个屏幕上不同时,使用几个显示器。SWT仅考虑一个具有全分辨率的显示器,并且返回的DPI将是默认屏幕的DPI。
我分享我使用AWT API找到的解决方案,因为SWT不会有帮助:

import java.awt.*;
...
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
// find the screen on which we draw
for (GraphicsDevice gd : gds){
    DisplayMode dm = gd.getDisplayMode();
    for (GraphicsConfiguration gc : gcs) {
        Rectangle bnds = gc.getBounds();
        if (bnds.contains(pt)){ 
            // pt is a java.awt.Point in the working area in virtual coordinates
            
            // and here is the expected windows ratio
            int ratio = 100 * dm.getWidth() / bnds.width;
            ...
        }
    }
}
t3psigkw

t3psigkw3#

您可以为每个监视器使用widget.getMonitor().getZoom()。

相关问题