我想创建一个自定义的 Swing 组件来呈现它们之间的某些实体和连接。应允许用户选择这些实体和连接以及使用拖放(仅在该组件内)移动它们。此外,用户应该能够放大和缩小整体视图。
您是否知道任何可能有助于创建这样一个组件的渲染框架,或者我需要自己实现它吗?
自定义渲染程序是一个项目,它获取一些理解的数据并将其转换为绘图指令。
如果您想添加缩放,您的自定义渲染程序将跟踪要绘制的数据项的大小和缩放比例因子,这样如果您要在 12 像素高的项目上放大 1.1,您会然后将其绘制为 13.2 像素高。
如果要添加拖放,则需要能够接收鼠标单击并拖动事件,该事件将为您提供像素坐标。您将该起始像素坐标映射到某个非缩放像素,然后找出该像素下的非缩放项目。然后,您将该项目移动(转换为缩放)正确数量的非缩放像素并请求重绘(请记住绘图层将处理当前缩放级别)。
就渲染框架而言,Java 有两个默认设置,您已经提到了一个。如果您真的想自己构建这个功能,Swing 很好,而且 AWT 也在 Java 中,但它可能不应该独立于 Swing 使用,除非您有一些特殊要求。
除此之外,还有 SWT 和许多高级便利库,如 JGraph 等,它们绑定到一个或其他底层框架来完成实际工作。这些便利库是否会完全按照您的意愿执行,或者即使它们可以配置为执行您希望的操作,仍有待观察,这取决于只有在您开始尝试便利库后才会发现和处理的非常具体的细节。