3

我正在尝试为图形编程构建用户界面。我想使用JUNG来处理绘图的图形方面。我不想使用 Graphics2D 绘制所有小部件,而是希望尽可能频繁地使用 Swing 小部件以利用 Swing 的事件架构。

我希望能够平移、缩放、旋转绘制图形的画布,但只要它们大到可以看到,仍然保留操纵 Swing 小部件的能力。我还希望小部件根据我选择的 JUNG 布局算法自动布局。

如何组合 Graphics2D 绘图和 Swing 组件?

我知道 JComponents 会使用他们的paint()方法来处理自己的绘制。我难以理解的是如何创建可能受 Graphics2D 转换影响的 Swing 对象,并且仍然保留其所有事件处理。我不能只显示组件的图像。该组件必须是活动的。

我尝试子类化一个小部件并将 AffineTransform 添加到传递给父paint方法的图形对象。它旋转小部件,但剪裁似乎已关闭。

有什么建议么?目前,如果可以的话,我想避免添加另一个库。

4

3 回答 3

2

JXLayer项目具有将整个 UI 转换为不同比例的实现。

你可能想看看这个演示

于 2012-04-03T23:47:43.653 回答
2

例如,JDigit extends JButton并覆盖paintComponent()以缩放到其封闭的大小Container。为了速度,该组件使用预渲染字形,但deriveFont()速度稍慢。Icon通过实现接口可以获得类似的结果。此示例将按钮网格缩放到几个预先确定的大小,并且此示例完全放弃组件,缩放图形上下文和所有内容。

于 2012-04-04T01:00:27.720 回答
1

根据我的研究,使用Piccolo2D可以平移和缩放 Swing 元素。使用 JUNG 的图形布局算法来布局图形和 Piccolo2D PSwing 节点,我可以生成一个可用的、可以通过算法布局的、可缩放和可平移的 Swing 组件图形。

于 2012-04-05T22:03:52.557 回答