java - 如何利用 SWT 的 Hi-DPI 支持来调整小部件大小?

标签 java swt jface

SWT(或 JFace)是否有一种公共(public)便利方法可以将传统单位转换为相应的缩放单位?我发现提到了 DPIUtil 类,但它是内部命名空间的一部分

如果没有便捷的方法可用,那么是否有可靠的方法来访问缩放级别?我看到有Device#getDeviceZoom()但这是 protected 。有Device#getDPI()这是公开的,因此可能有用。这是否考虑到了缩放,还是天真的,只是声明所有 DPI 都是 96?

我正在对某些面板应用默认大小调整提示,我希望它们考虑显示器缩放设置。例如,假设在常规显示器上我希望默认值为 300px,但在 150% 缩放时我希望将其计算为 450px。计算显然很简单,但我需要乘数。

注意:这与我之前的问题 How do you utilize SWT's Hi-DPI support for icons? 相关但不同。因为 SWT 提供了专门处理图像的类。

最佳答案

除了 DPIUtil 之外,我还没有找到任何其他东西来确定比例(缩放)因子。

但您通常不需要此信息。在 150 缩放设备上指定 300px 的大小将被 SWT 自动缩放为 450px(并且将使用您提供的任何 150 缩放图像)。我有一台带有两个屏幕的 iMac - 一个缩放为 200 的 5k 屏幕和一个未缩放的 2.5k 屏幕 - SWT 应用程序在两个屏幕上显示的大小相同。

缩放实际上是在操作系统中完成的,而不是 SWT(至少在 macOS 上是这样工作的)。操作系统会放大尺寸,以更高分辨率渲染字体,并使用高分辨率图像(如果可用)。因此程序除了提供高分辨率图像之外不需要做任何事情。

这样,即使是不知道缩放显示的旧程序仍然会以合理的尺寸显示。

关于java - 如何利用 SWT 的 Hi-DPI 支持来调整小部件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613325/

相关文章:

java - SWT 未启用 shell

java - eclipse 用户界面 : Section heading in a TableWrapLayout

java - JFace - 如何删除首选项属性?

java - ScrolledComposite JFace 对话框中没有滚动条

java - 如何仅将选定文件夹内的内容添加到 jar 中

Java 泛型类型扩展多个类

java - 多个文本字段的文档监听器

java - 为什么添加空格会使我的正则表达式出错?

java - 检测是否在HiDPI显示屏上运行

java - 不同类之间的通信(Eclipse Forms 部分之间的通信)