Java Swing:系统范围的组件规模?

时间:2012-05-30 00:11:45

标签: java swing

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

编辑:

我将Java Swing应用程序移植到Sugar(OLPC XO图形环境)。我没有无障碍功能。该机器在7.5“显示屏中只有一个1200x900的分辨率。因此组件非常小且不可读。

5 个答案:

答案 0 :(得分:4)

  • 可以使用Nimbus Look and Feel

  • 来调查Swing JComponents
  • 修改Nimbus L& F,ColorInsetsBounds ei非常复杂,但是没有任何问题的简单形式

答案 1 :(得分:3)

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

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

所以最好的方法(就像我看到的)是修改标准UI,因此它们提供了额外的首选大小(在你的情况下加倍)。但是你必须为某种类型的每个组件(按钮/复选框/表格/树/滚动e.t.c.)单独执行此操作。此外,您无法更改系统UI - 您只能扩展一些跨平台的外观,如Metal LaF,如果您使用的是原生外观,那么它将毫无用处。

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

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

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

答案 2 :(得分:2)

如果您放置

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

在主要方法的最开始,它将整个应用程序缩放2倍。其他缩放因子也是可能的。如果已成功在Windows 7和Linux以及KDE(系统外观都很好)上使用openJDK 11进行了成功尝试。 Windows确实接受小数比例缩放因子,而KDE不接受。

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

我不是专家,只是一个想法。也许您可以子类化有问题的组件,然后在重写的构造函数中,您可以调用

setBounds() 

setPreferredSize()

但是我相信你需要使用null布局 为了这个工作。

[如果我错了,请纠正我!]