Я думаю, что теперь я могу ответить на мой собственный вопрос. Официально, похоже, нет никакого способа узнать, что такое физические DPI вашего экрана. Единственный способ, как представляется, использовать некоторые частные API, как в следующем примере:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.stage.Screen;
import javafx.stage.Stage;
public class PixelScaleTest extends Application {
public static double getPixelScale(Screen screen) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Method m = Screen.class.getDeclaredMethod("getScale");
m.setAccessible(true);
return ((Float) m.invoke(screen)).doubleValue();
}
@Override
public void start(Stage primaryStage) throws Exception {
try {
System.out.println("PixelScale: " + getPixelScale(Screen.getPrimary()));
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
| SecurityException e) {
e.printStackTrace();
}
Platform.exit();
}
public static void main(String[] args) {
launch(args);
}
}
С помощью коэффициента пикселей масштаба вы можете вычислить ваше физическое ПИ. На стандартном экране этот коэффициент должен быть 1,0, а на Mac Retina - 2,0.
Какую версию java вы используете? – Inge
Я использую JDK8u31 – mipa
А, ну, может быть, вы найдете некоторые подсказки в этом [ответе] (http://stackoverflow.com/questions/26182460/javafx-8-hidpi-support) – Inge