当前位置: 首页 > 面试题库 >

如何在Windows / Linux上设置Java Swing应用程序的DPI?

荆运诚
2023-03-14
问题内容

如果您有一个DPI超过150的显示器(例如Macbook Pro),您可能还会发现问题: Java
Swing应用程序上的字体对于DPI显示器来说太小了
,我根本无法更改字体大小(直接忽略Windows DPI,仅显示 非常原始的DPI- >
96
。除了更改屏幕分辨率外,我什么也不能做,这绝对会使LCD上的所有内容变得模糊。

是的,我有一台具有高DPI监视器的笔记本电脑,分辨率为1920x1080,分辨率为15.6’,某些Java桌面应用在笔记本电脑上看起来很小,例如Matlab,Burpsuite等。我已经在互联网上搜索了很长时间了,但是仍然找不到解决问题的方法。我知道我可以通过更改JRE字体JRE_HOME/lib/font/fontconfig.properties.src,但是找不到任何位置来设置Java桌面字体的默认字体大小或DPI。

问题没有解决办法吗?您有高DPI监视器吗?您如何使用此类应用程序?Swing是否会放弃DPI高用户?


问题答案:

我目前正在Windows上调查此问题。这是我发现的:

大多数Swing
Look&Feel根本不支持高DPI,甚至Nimbus也不支持,即使它应该具有可扩展性。我发现一些老博客文章说Nimbus最终可能会提供高DPI缩放比例,但显然这从未发生过。

一个例外是系统LAF,但在所有DPI设置下,其默认字体都比实际系统字体大小小10%。此外,必须按照此处所述明确选择系统:http
:
//docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

您也无法在Swing中设置单个缩放比例。特定的LAF必须提供代码来处理缩放。因此,您最好的选择是System,并希望它足够好。

但是,JavaFX可以正确地自动扩展到我的系统上的最大150%。如果有可能,我建议您使用JavaFX来构建GUI。

编辑:我做了几个小型测试程序,并为各种GUI框架,Swing主题和DPI设置拍摄了比较屏幕截图。这可能对阅读此问题的人很有帮助:http
:
//kynosarges.org/GuiDpiScaling.html



 类似资料:
  • 问题内容: 等效于以下命令行: 要运行我的应用程序,必须在PATH变量中添加一些内容。因此,我想在程序开始时捕获异常,如果程序无法启动,并显示一些向导供用户选择需要放在PATH中的程序的安装文件夹。我将使用该文件夹的绝对路径,并将其添加到PATH变量中,然后再次启动我的应用程序。 编辑 : 那个“东西”是VLC播放器。我需要PATH变量中的安装文件夹(例如:C:\ Program Files \

  • 我有一个要求,我需要采取我的一些文件的副本,并把它放在内部服务器。这需要定期发生,比如每天晚上8点。这也是一个Swing应用程序,在我的本地PC上运行。我知道我可以使用Java计划任务,或者使用,或者更好的。 但是,问题来了。没有人会仅仅为了这个调度器就让计算机开机24小时。据我所知,如果有人重启电脑,Java调度器也会死掉。相反,一旦任务计划完成,如果计算机已打开,则计划的任务应在每天晚上8点进

  • 问题内容: 我正在Windows 10计算机(使用Visual Studio 2015更新3 + Microsoft .NET Core 1.0.1 VS 2015工具预览2)上开发.NET Core应用程序,该应用程序应在Ubuntu 16计算机上发布。为此,我必须将源代码移动到终端机并在那里进行编译,以使其运行。例如,我无法在Windows上编译代码并在Linux上运行它。问题:有什么方法可以

  • 问题内容: 在Ubuntu中,这非常简单;我可以使用以下方式运行该应用程序: 但是,这在Windows上不起作用。是否可以在其中配置属性的配置文件? 问题答案: 当前版本的Windows使用Powershell作为默认外壳,因此请使用: 根据下面的@jsalonen的答案。如果您使用的是CMD(已不再维护),请使用 这应该在您打算运行Node.js应用程序的命令提示符下执行。 上一行将在执行命令的

  • 问题内容: 我已经准备了一个应用程序和网站,客户可以在该应用程序上为其设置几个选项,然后再下载。设置以二进制格式存储在文件的末尾(附加),然后将已编辑的文件发送给最终用户。问题是文件的“内容”的更改将破坏文件签名- 是否有任何机会使用任何命令行工具重新签名此更改的文件?我尝试使用Microsoft的SignTool,但在Linux上无法正常工作。 问题答案: 使用的signtool 实际上很简单;

  • 当我尝试运行一个新的Swing应用程序时,我遇到了一些重大问题。我使用的是NetBeans 8.1、JDK版本1.8和OS Windows 10。 所以每次我试图打开一个新的Swing项目(不管它是应用项目还是EA),并且我运行它,NetBeans都会正确部署它,但是Swing窗口没有打开,在NetBeans的状态栏中它只是显示正在运行。我等了几分钟,然后我不得不停止构建,因为什么都没发生。当我在