我该如何对JComponents进行平移和缩放?

4
我正在尝试构建一个图形编程用户界面。我想使用JUNG来处理绘图的图形方面。与其使用Graphics2D绘制所有的小部件,我更愿意尽可能多地使用Swing小部件,以利用Swing的事件架构。
我希望能够平移、缩放、旋转绘制图形的画布,但仍然保留对Swing小部件的操作能力,只要它们足够大就可以看到。我还希望基于我选择的JUNG布局算法自动布置小部件。
如何组合Graphics2D绘图和Swing组件?
我知道JComponents会使用它们的paint()方法来绘制自己。我不明白的是如何创建受Graphics2D变换影响并仍保留所有事件处理的Swing对象。不能只显示组件的图像。组件必须是活动的。
我尝试了子类化小部件并向传递给父级的paint方法的图形对象添加AffineTransform。它可以旋转小部件,但裁剪似乎有问题。

有什么建议吗?目前我想尽可能避免添加另一个库。

3个回答

2

JXLayer项目有实现将整个用户界面转换为不同比例的功能。

您可能想要查看此演示


谢谢,我会进一步研究的。我想更好地理解我遇到问题的原因。 - Jeffrey Guenther
@JeffreyGuenther 通过java.net进行重定向总是会出现问题,最终导致404错误。因此,如果可能的话,我将编辑您帖子中的链接。 - ee.

2
作为一个例子,JDigit extends JButton 重写了 paintComponent() 方法,以缩放到其封闭的 Container 大小。为了提高速度,该组件使用预渲染的字形,但是 deriveFont() 只稍微慢一点。实现 Icon 接口也可以获得类似的结果。这个示例将一个按钮网格缩放到几个预定大小,而这个示例完全放弃了组件,缩放图形上下文和所有内容。

1
根据我的研究,使用Piccolo2D可以实现对Swing元素进行平移和缩放。通过使用JUNG的图形布局算法来布置图形和Piccolo2D PSwing节点,我可以生成一个由Swing组件构成的图形,这些组件是可用的、可以通过算法布置,并且可以进行缩放和平移。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接