我正在尝试让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”的结果。我不知道哪一个是正确的,或者是否有更好的方法。
请帮忙。感谢。
答案 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()
获取其他屏幕。