4

有没有办法通过一个因素来扩展应用程序中的所有 Swing 组件?我有一个现有的 Swing 应用程序,我想以双倍大小显示所有组件。这可能吗?

编辑:

我正在将 Java Swing 应用程序移植到 Sugar(OLPC XO 图形环境)。我没有辅助功能。该机器在 7.5 英寸显示屏中只有一种分辨率 1200x900。所以组件真的很小而且不可读。

4

4 回答 4

7

如果你放置

System.setProperty("sun.java2d.uiScale","2")

在您的 main 方法的最开始,这会将整个应用程序缩放 2 倍。其他缩放因子是可能的。如果在 Windows 7 上使用 openJDK 11 和使用 KDE 的 Linux 成功尝试过此操作,两者都具有系统外观。Windows 接受小数比例因子,KDE 不接受。

如果您不想修改源代码,则 jvm 的命令行选项将具有相同的效果:

java -Dsun.java2d.uiScale=2 -jar myApp.jar

于 2019-08-21T17:48:57.687 回答
4

不幸的是,Swing 中没有这样的标准功能。

应用程序中的每个组件大小由添加该组件的容器的布局以及由其 UI 提供的组件的首选/最小大小决定。

所以最好的方法(如我所见)是修改标准用户界面,因此它们提供额外的首选尺寸(在你的情况下加倍)。但是您必须为特定类型的每个组件(按钮/复选框/表格/树/滚动等)单独执行此操作。另外,您无法更改系统 UI - 您只能扩展一些跨平台的外观和感觉,如 Metal LaF,如果您使用本机外观和感觉,这将毫无用处。

不过,您可以更改一些默认的 L&F 属性,例如字体:

UIManager.put ( "Button.font", new FontUIResource ( new Font ( "Arial", Font.BOLD, 20 ) ) );

这种特定情况仅更改按钮字体。您还可以在任何 LookAndFeel 类中找到许多其他组件字体属性(例如 BasicLookAndFeel)。

于 2012-05-30T00:21:33.287 回答
4
于 2012-05-30T04:38:22.980 回答
1

您可以为此使用 J(X)Layer(请参阅 www.pbjar.org/blogs/jxlayer/ 但该网站目前似乎已关闭)。可以在此处找到基于它的示例:http: //patrickwebster.blogspot.com/2009/01/scalable-jfreechart-applet.html

于 2012-05-30T10:17:58.003 回答