Java – ZUI(Zoomable用户界面)

我目前正在做一个需要显示大量数据的小型个人项目,我突然想到实现一种可缩放的用户界面,允许用户浏览大量数据。

我知道现有的项目,比如ZVTM和Piccolo2d ,我可能会最终用于这项工作,但我也很想开始自己写作。 但是,我有点不确定如何开始。

从我一直在阅读的内容看来,像Piccolo2d这样的项目是由于Java中缺乏“场景图”管理而开发的,而Piccolo2d是基于旧版项目的工作开发的,例如“Pad”,“Pad ++”和’爵士乐’。

经过一段时间的谷歌搜索,我可以看到JavaFX中提供了场景图管理,但我想知道Java 7中的Swing是否具有此function。

我有点想一想,我想知道是否可以使用JLayer API实现基本的缩放界面,实质上是根据当前的缩放级别来装饰具有不同层的对象。

举个例子,假设我可以看到最远缩放级别的目录,然后放大将显示目录的内容,并进一步放大将显示目录中存在的文件内的文本。 我已经和Eagle Mode玩了一段时间,所以这是我正在考虑的一个完美的例子。

我知道这是一个很长的问题(如果它真的是一个问题)。 基本上,让我们假设Piccolo等人不存在,而我所拥有的只是核心Java 7 JDK,有人能提出一个好的起点吗?

似乎Piccolo2d很大程度上依赖于Java2d API,所以我想知道API是否已经进步,或者Java 7引入了新的机制来实现类似的效果。

我对可以提供的任何意见或建议感兴趣。 我知道这不是一项容易的任务,但没有任何时间限制,它只是一个个人项目。

谢谢

我所拥有的只是核心Java 7 JDK,谁能提出一个好的起点呢?

我建议使用JavaFX 。

  1. JavaFX包含在核心Oracle Java 7(和Java 8)JDK和运行时中。
  2. JavaFX架构包括一个全面的场景图 。
  3. JavaFX具有用于场景图变换的内置工具,例如缩放,平移,分层,动画,转换等。
  4. JavaFX执行硬件加速渲染。
  5. 您可以使用H.264等现代编解码器进行可扩展的video播放。
  6. JavaFX包含一个基于矢量的综合控件集,在放大和缩小时看起来很好。
  7. 包括对视网膜显示等的HiDPI支持(在Java 8中)。
  8. JavaFX场景图中的硬件加速3D对象模型渲染(在Java 8中)。
  9. 您可以使用FXML以交互方式使用SceneBuilder来定义UI,但可能会使开发更容易。
  10. JavaFX项目是开源的,并且正在积极开发中。
  11. JPedal 为JavaFX提供了第三方pdf查看器 ,您可以使用它查看可扩展的pdf文档。
  12. JavaFX包含一个HTML查看器(在Java 8中具有缩放function)。

实施注意事项

我的猜测(这纯粹是我的观点)是,在JavaFX中实现这个特定项目要比在vanilla Swing中实现这个项目要容易得多,因为底层JavaFX技术和function更符合您的要求。

显然,无论您选择何种技术,实现与Eagle Mode一样全面的function仍然需要大量工作,并且需要在Java系统之外进行原生扩展(以显示虚拟桌面等)。

JavaFX建议来自“我所有的核心Java 7 JDK”的立场。 诸如ZVTM之类的系统具有用于ZUI构建的支持function和API,其中还没有包括JavaFX应用程序(据我所知)(例如镜头视图,门户视图,将UI映射到大型多屏幕arrays等)。 如果您具有使用预构建库(如ZVTM)的灵活性,则应根据项目要求对其进行严格评估。

范围建议

为了使项目更易于管理,请将初始实现要求限制为基于ZUI的文件系统查看器,而不是function齐全的ZUI桌面UI。

JavaFX ZUI示例

  • grezi项目是一个基于JavaFX的GroovyFX包装器的ZUI演示系统。
  • 来自mihosoft的vworkflows在JavaFX场景图之上提供了一个ZUI感知窗口系统。
  • 在ScrollPane中缩放JavaFX节点 。

祝你的项目好运。 。 。