3

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

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

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

在快速搜索了一下之后,我可以看到 JavaFX 中提供了场景图管理,但我想知道 Java 7 中的 Swing 是否具有此功能。

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

例如,假设我可以在最远的缩放级别看到一个目录,然后放大将显示目录的内容,进一步放大将显示该目录中存在的文件中的文本。我已经玩鹰模式一段时间了,所以这是我所想的一个完美的例子。

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

Piccolo2d 似乎在很大程度上基于 Java2d API,所以我想知道 API 是否有所改进,或者 Java 7 是否引入了实现类似效果的新机制。

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

谢谢

4

1 回答 1

6

我所拥有的只是核心 Java 7 JDK,任何人都可以提出一个好的起点吗?

我建议使用JavaFX

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

实施注意事项

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

显然,无论您选择哪种技术,实现像 Eagle Mode 这样全面的功能仍然需要大量工作,并且需要 Java 系统之外的本机扩展(以显示虚拟桌面等)。

JavaFX 建议是从“我所拥有的只是核心 Java 7 JDK”的角度来看的。ZVTM等系统具有支持 ZUI 构建的功能和 API,JavaFX 应用程序(据我所知)尚未包含这些功能和 API(例如,镜头视图、门户视图、将 UI 映射到大型多屏幕阵列等)。如果您可以灵活地使用 ZVTM 等预构建库,则应根据您的项目要求对其进行认真评估。

范围建议

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

JavaFX ZUI 示例

祝你的项目好运。. .

于 2013-08-15T19:36:47.633 回答