我有一个使用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);
}
}
我想您可以进一步采取这一步骤,并按比例重新定义比例边界,但这很快就会变得非常复杂