如何让JavaFX告诉我是在4k还是1080p屏幕上

时间:2018-02-21 20:51:35

标签: javafx screen screen-resolution

我正在尝试让JavaFX检测我所使用的屏幕分辨率,无论是1080p还是4k,因此我可以相应地调整/定位我的程序。

我尝试ul { font-family: Arial, Verdana; font-size: 16px; margin: 0; auto; padding: 0; list-style: none; display: inline-block; } ul li { display: block; position: relative; float: left; } li ul { display: none; } ul li a { display: block; text-decoration: none; color: #ffffff; border-top: 1px solid #ffffff; padding: 9px 18px 9px 18px; background: grey; margin-left: 1px; white-space: nowrap; } ul li a:hover { background: #ddd; } li:hover ul { display: block; position: absolute; } li:hover li { float: none; font-size: 13px; } li:hover a { background: grey; } li:hover li a:hover { background: #ddd; } ul > li.sub{ background: url(ic_keyboard_arrow_down_white_18dp_1x.png) right center no-repeat; } </style> <ul id="menu"> <li class="sub"> <a href="#">Help</a> <ul> <li><a href="">test1</a></li> <li><a href="">test2</a></li> <li><a href="">test3</a></li> </ul> </li> 并打印“96”。使用Screen.getPrimary().getDpi()我得到了“144”的结果。我不知道哪一个是正确的,或者是否有更好的方法。

请帮忙。感谢。

1 个答案:

答案 0 :(得分:4)

您实际上想知道屏幕尺寸而不是像素密度 DPI Dots Per Inch的衡量标准。

在JavaFX中,您可以使用Screen class实现此目的。由于名为 jewelsea 的用户指出可视边界仅返回所选屏幕的 visual 区域的值。这意味着您要使用screenObject.getVisualBounds()表示{和screenObject.getBounds()作为实际屏幕尺寸。

 // full bounds
 Rectangle2D bounds = Screen.getPrimary().getBounds();

 bounds.getWidth(); // screens width
 bounds.getHeight(); // screens height

 // visual bounds
 Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds();

 visualBounds.getWidth(); // screens usable width (no task bars etc.)
 visualBounds.getHeight(); // screens usable height

在代码段中,使用主要屏幕。您还可以使用Screen.getScreens()获取其他屏幕。