放大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的更多信息。 从示例中,它似乎可以帮助解决您的问题。

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

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

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

这很简单。

它特别吹嘘它的平滑缩放。 你基本上制作一个可以包含各种元素的“canvas”,然后只需按住鼠标右键并来回平移鼠标即可进行缩放。

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

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