如何在 java 中检测 windows 字体大小(100%、125%、150%)
How to detect the windows font size(100%, 125%, 150%) in java
我正在使用一个 swt 对话框,如果我将字体大小(控制面板-> 显示)从较小 (100%) 增加到较大 (150%),控件会从屏幕上截断
这可以使用
来解决
- 可滚动复合或
- 如果 windows 大小已更改,则调整控件或字体大小
变大了。
对于第 2 点,我无法获得当前的 Windows 尺寸。如果我明白了,问题就可以解决,因为可滚动的复合材料不适合较小的尺寸。
我是按照以下方式做的:
Display.getCurrent().getDPI().x
这里根据return值(96、120或144)分别判断大小是100%、125%还是150%
我知道这是一个老话题,但它仍然是一个实际问题,答案不适用于 windows10,其中使用多个显示器时每个屏幕上的比例可能不同。
SWT 只考虑一个具有全分辨率的显示器,返回的 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;
...
}
}
}
我正在使用一个 swt 对话框,如果我将字体大小(控制面板-> 显示)从较小 (100%) 增加到较大 (150%),控件会从屏幕上截断 这可以使用
来解决- 可滚动复合或
- 如果 windows 大小已更改,则调整控件或字体大小 变大了。
对于第 2 点,我无法获得当前的 Windows 尺寸。如果我明白了,问题就可以解决,因为可滚动的复合材料不适合较小的尺寸。
我是按照以下方式做的:
Display.getCurrent().getDPI().x
这里根据return值(96、120或144)分别判断大小是100%、125%还是150%
我知道这是一个老话题,但它仍然是一个实际问题,答案不适用于 windows10,其中使用多个显示器时每个屏幕上的比例可能不同。 SWT 只考虑一个具有全分辨率的显示器,返回的 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;
...
}
}
}