我有一个使用Windows下的Substance LookAndFeel作为目标平台的Java应用程序,我想在不更改系统设置的情况下增加应用程序的DPI设置。

我要这样做是因为我不想强制用户重新启动Windows,并且因为许多Windows应用程序似乎在DPI设置很高(> 120)时出现问题。

PS:我知道Substance LaF允许在运行时缩放字体大小,但是那样只能缩放控件的高度,而不是宽度。我希望GUI完全缩放,就像设置系统的DPI设置那样。

最佳答案

不知道那是否可能。外观将必须支持它,据我所知,Windows Look&Feel不支持。您可以考虑以下一种方法:遍历外观中定义的所有字体,并将它们重新定义为更大的字体。这是执行此操作的代码段:

for (Iterator i = UIManager.getLookAndFeelDefaults().keySet().iterator(); i.hasNext();) {
    String key = (String) i.next();
    if(key.endsWith(".font")) {
        Font font = UIManager.getFont(key);
        Font biggerFont = font.deriveFont(2.0f*font.getSize2D());
        // change ui default to bigger font
        UIManager.put(key,biggerFont);
    }
}

我想您可以进一步采取这一步骤,并按比例重新定义比例边界,但这很快就会变得非常复杂

10-06 13:38
查看更多