13

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

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

  g2d.scale(2, 2);

  return super.getComponentGraphics(g2d);
 }

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

谢谢你的帮助,克里斯

4

4 回答 4

9

您可以尝试一下JXLayer 库

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

于 2010-05-31T15:29:52.113 回答
7

缩放视图很容易;转换鼠标坐标只是稍微困难一些。这是一个基本的例子。我会避开,尽管开发一个了解几何JComponent的类似物可能是有意义的。ScaledComponent这就是@Gnoupi 建议使用库的地方。

于 2010-05-31T16:52:07.007 回答
2

嘿,如果你想像任何其他图像查看器一样缩放图像,你可以试试这个使用 JPanel 使用 drawImage() 方法绘制图像现在创建一个按钮,当你点击按钮时,增加它出现的框架上面板的大小就好像在 Zoom 中查看图像一样

于 2011-11-15T12:52:25.873 回答
2

您可能会发现 Piccolo2D.java API 很有用: http ://code.google.com/p/piccolo2d/

这很简单。

它特别吹捧它的平滑缩放。您基本上制作了一个可以包含各种元素的“画布”,然后只需按住右键单击并前后平移鼠标即可进行缩放。

我在一个使用它来创建它的团队中工作:http: //sourceforge.net/apps/mediawiki/guitar/index.php ?title=WebGuitar#EFG.2FGUI_Visualizer

您看到的节点本身就是可点击的链接。

于 2012-09-26T23:03:16.263 回答