【发布时间】:2010-09-16 07:50:42
【问题描述】:
我正在开发一个大型遗留 Java 应用程序,该应用程序的一个重要功能是根据监视器分辨率自动缩放 GUI 组件。我们正在将运行它的 JVM 从 1.4.2 升级到 1.6,但由于 java.awt.Container.getPreferredSize() 的实现发生了变化,现在缩放被破坏了。
getPreferredSize 用于返回您使用 setPreferredSize() 提供的相同对象(一切也适用于最小/最大尺寸),所以我们要做的是在每个具有特定子类 java.awt.Dimension 的缩放组件上调用 setPRefferedSize ,然后我们将遍历组件层次结构并在分辨率发生变化时更新每个缩放组件。
但是在 Java 1.6 中,getPreferredSize 返回您传递给它的 Dimension 对象的副本,因此它不再是正确的类型,并且没有任何内容被缩放。
我通过将组件类放在类路径上的 JRE 前面,用我自己的实现(感谢开源 JRE)重写了一个解决方案,很快就编写了一个解决方案。然而,这个解决方案显然是不可维护的。
还有其他人知道这个问题的其他解决方案吗,您将如何在 java 1.5/1.6 中实现 GUI 缩放?
【问题讨论】:
标签: java user-interface scaling