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