放大Java Swing应用程序


问题内容

我正在寻找放大Java
Swing应用程序的方法。这意味着我想通过给定的因素来调整给定JPanel中所有组件的大小,就好像我要截取UI的屏幕截图并只是应用“图像缩放”操作一样。必须调整字体大小以及复选框,文本框,光标等的大小。可以通过将变换应用于图形对象来缩放组件:

 protected Graphics getComponentGraphics(Graphics g) {
  Graphics2D g2d=(Graphics2D)g;

  g2d.scale(2, 2);

  return super.getComponentGraphics(g2d);
 }

只要您不关心自我更新组件,该方法就起作用。如果您的应用程序中有一个文本框,则此方法将停止工作,因为文本框每秒都会更新一次以显示(闪烁)光标。而且由于这次它不使用修改后的图形对象,因此该组件出现在旧位置。是否可以永久更改零部件图形对象?鼠标单击事件处理程序也存在问题。另一种可能性是将JPanel的所有子组件的大小(setPreferredSize)调整为新的大小。这对复选框不起作用,因为复选框的显示图片不会更改其大小。我还想到了对自己的布局管理器进行编程的操作,但是我没有
认为这是可行的,因为布局管理器仅更改对象的位置(和大小),而无法放大复选框(请参见上一段)。还是我对这个假设错了?您是否有任何想法,无需编程自定义组件就能实现可缩放的Swing
GUI?我寻找可旋转的用户界面,因为这个问题看起来很熟悉,但是我也没有找到任何令人满意的解决方案。

克里斯,谢谢你的帮助


问题答案:

您可以尝试使用JXLayer库

其中有几个工具,可以帮助您进行缩放。检查此处显示的示例。我建议您从该库中阅读有关TransformUI的更多信息。从该示例看来,它可以帮助解决您的问题。