JavaSwing:系统范围的组件规模?

JavaSwing:系统范围的组件规模?,java,swing,Java,Swing,有没有一种方法可以通过一个单一因素来调整应用程序中的所有Swing组件?我有一个现有的Swing应用程序,我想以两倍大小显示所有组件。这可能吗 编辑: 我正在将一个JavaSwing应用程序移植到Sugar(OLPCXO图形环境)。我没有辅助功能。该机器在7.5英寸显示屏上只有一个1200x900的分辨率。因此,组件非常小,无法读取。不幸的是,Swing中没有这样的标准功能 应用程序中的每个组件大小由添加该组件的容器的布局以及组件的首选/最小大小(由其UI提供)确定 因此,最好的方法(如我所见)

有没有一种方法可以通过一个单一因素来调整应用程序中的所有Swing组件?我有一个现有的Swing应用程序,我想以两倍大小显示所有组件。这可能吗

编辑:


我正在将一个JavaSwing应用程序移植到Sugar(OLPCXO图形环境)。我没有辅助功能。该机器在7.5英寸显示屏上只有一个1200x900的分辨率。因此,组件非常小,无法读取。

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

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

因此,最好的方法(如我所见)是修改standart UI,以便它们提供额外的首选大小(在您的情况下是两倍)。但对于特定类型的每个组件(按钮/复选框/表格/树/卷轴e.t.c.),您必须分别执行此操作。另外,您不能更改系统UI-您只能像Metal LaF一样扩展一些跨平台的外观,如果您使用的是本机外观,这将毫无用处

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

UIManager.put ( "Button.font", new FontUIResource ( new Font ( "Arial", Font.BOLD, 20 ) ) );
此特定案例仅更改按钮字体。在任何LookAndFeel类中都可以找到许多其他组件字体属性(例如BasicLookAndFeel)。

  • 可以使用

  • 修改Nimbus L&F非常复杂,它的
    颜色
    插图
    边界
    e.i.,但形式简单,没有任何问题

您可以使用J(X)层来实现这一点(请参见www.pbjar.org/blogs/jxlayer/,但目前网站似乎已关闭)。在此可以找到一个建立在它之上的示例:

如果您

System.setProperty("sun.java2d.uiScale","2")
在主方法的一开始,这将以2倍的比例缩放整个应用程序。其他比例因子也是可能的。如果您已经在Windows7上使用OpenJDK11和使用KDE的Linux成功地尝试了这一点,那么这两个版本都具有系统外观。Windows不接受分数比例因子,KDE不接受

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


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

那么可以更改默认字体大小吗?感谢您的回答。当然可以使用
UIManger
@trashgood修改外观属性。您可以通过UIManager修改外观属性,但其中一些属性无法正确更新(即使在您执行完整的组件树更新后,因为其中一些在第一次调用后被缓存)。此外,只有少数属性会影响组件大小,并且它们不依赖于组件本身(例如按钮/文本字段边距),因此您不能以将组件大小加倍的方式指定它们。@但是如果是,您可以通过默认的外观属性修改默认组件的字体大小。请再次检查我的答案,以获取代码示例。@MikleGarin:很好。由于OP已经提出了可读性要求,所以可能会关注字体大小,如您所示。应允许组件采用相应的+1“这可能吗?”如果用户需要应用程序的组件,更好的问题是“这样做有什么意义?”。为了达到两倍的规模,他们可以使用操作系统内置的可访问性功能来做到这一点。这种能力是免费的,独立于你的应用程序。没有全局比例因子。以目前的形式,这个问题无法回答。请编辑您的问题,以包含您想要完成的任务的详细信息。@请检查编辑。这就是你的观点。我相信这就是为什么这里有裁员经理的最重要的原因way@Butaca:此目标平台有哪些外观实现?啊,可能类似于?@mKorbel谢谢,但我认为组件不够大。请检查我的编辑。sun.java2d.uiScale属性出现得有点晚,我想:)无论如何,谢谢你的回答,我不知道:)该属性在Java 8中不可用,在Java 11中可用,所以我想它是最近引入的。