我们有一个带有trayicon(SystemTray)和弹出菜单(PopupMenu)的Java应用程序,它在所有平台上运行良好。
在新的Surface 4 Pro上我们遇到了一个问题,因为菜单的大小非常小。看起来并没有注意到它是一个'视网膜'/高清显示器。
有一种简单的方法可以解决这个问题吗?
答案 0 :(得分:2)
看起来您可能不得不求助于设置菜单UI。
当然,这意味着您需要某种方式来确定您是否首先在Surface Pro上运行。
您可以尝试找出菜单用户界面使用的当前字体大小和尺寸,并将其与Toolkit.getDefaultToolkit().getScreenSize()
答案 1 :(得分:0)
作为一种与特定设备无关的通用解决方案,您可以通过以下方式检测每英寸点数的屏幕分辨率:
java.awt.Toolkit.getDefaultToolkit().getScreenResolution()
这将返回DPI中的屏幕分辨率(每英寸点数)。此值越大 - 文本字体对于特定字体大小将越小。
使用DPI设置可接受(或最大)的DPI设置并计算调整比率。
您可以通过替换UI委托字体(针对应用程序范围的效果)进行调整 或者,如果问题特定于系统托盘,则只为SystemTray的MenuItems导出更大的字体:
java.awt.Font defaultFont = java.awt.Font.decode(null); // default font
float adjustmentRatio = 1.0f; // Calculate this based on your metrics
float newFontSize = defaultFont.getSize() * adjustmentRatio ;
java.awt.Font derivedFont = defaultFont.deriveFont(newFontSize);
// PopupMenu with the adjusted font size:
MenuItem item = new MenuItem("Menu Item");
item.setFont(derivedFont);
popupMenu.add(item);