我有一个使用Swing GUI的Java应用程序,当我在MAC pro或表面执行应用程序时,UI大小非常小但字体大小正常,如果我改变字体大小它可以适合,但是字体和UI对象将变得非常小,难以阅读。
我可以让布局在高分辨率面板中看起来像全高清面板吗?
答案 0 :(得分:2)
您需要计算分辨率因子。此代码块计算所有OS的因子
public static Float getRetinaScaleFactor(){
Object obj = Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor");
if(obj != null){
if(obj instanceof Float)
return (Float) obj;
}
return null;
}
public static boolean hasRetinaDisplay(){
Float fRetinaFactor = getRetinaScaleFactor();
if(fRetinaFactor != null){
if(fRetinaFactor > 0){
int nScale = fRetinaFactor.intValue();
return (nScale == 2); // 1 indicates a regular mac display, 2 is for retina
}
}
return false;
}
private static float getResulationFactor(){
float fResolutionFactor = ((float) Toolkit.getDefaultToolkit().getScreenResolution() / 96f);
if(hasRetinaDisplay()){
fResolutionFactor = fResolutionFactor * getRetinaScaleFactor().floatValue();
}
return fResolutionFactor;
}
现在我们有一个分辨率因子值。让我们用它。你可以像这样为每一个设置一个值。
JLabel jTestLabel = new JLabel("hello world");
Font jNewFont = jTestLabel.getFont().deriveFont(Font.Plain, jTestLabel.getFont().getSize() * getResulationFactor());
jTestLabel.setFont(jNewFont);
或者您可以通过覆盖lookandFeel的defaultFont值来使用此值一次。