JxBrowser右键菜单位置偏移

参照demo写完右键菜单,发现菜单位置与鼠标隔着一定的距离。因为很久以前在使用VB开发屏幕取色器时碰到过类似的问题,我猜测是win10屏幕缩放的问题(用win7系统的时候没碰到过这样的问题)。

桌面右键,选择“显示设置”,发现当前的缩放比例是125%,于是把坐标乘以125%,右键菜单位置正常。

 

之后尝试使用JAVA调用windows API去获取缩放比例,折腾了一阵,发现获取的屏幕DPI值是120,和我想要的125有点差距。(DPI是什么?自行百度)

由于对DPI的概念不熟,一直以为DPI就是屏幕缩放比例。后来偶然在百度上看到,不同的DPI对应不同的屏幕缩放比例,豁然开朗。

DPI is how scaling setting is implemented. Their relationship is:(dpi是如何实现缩放设置的。他们的关系如下:)
96 DPI = 100% scaling
120 DPI = 125% scaling
144 DPI = 150% scaling
192 DPI = 200% scaling

知道了这些,一切都好办了,不需要调用windows api,Java自带获取DPI的方法。

int dpi=Toolkit.getDefaultToolkit().getScreenResolution();
int scaling=100;
switch(dpi) {
case 120:
    scaling=125;
    break;
case 144:
    scaling=150;
    break;
case 192:
    scaling=200;
    break;
}

再用得到屏幕坐标乘以scaling除以100,使右键菜单在不同缩放比例的电脑上位置不偏移。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值