【问题标题】:Java - ZUI (Zoomable User Interface)Java - ZUI(可缩放用户界面)
【发布时间】:2013-08-15 17:10:41
【问题描述】:

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

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

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

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

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

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

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

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

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

谢谢

【问题讨论】:

  • 使用JLayer可以装饰文本域,在oracle教程中有zoom示例
  • 谢谢 nachokk,你碰巧有那个链接吗?我已经看过了,但我似乎找不到它。
  • 可能有一个原因(您很可能会发现)您找不到任何此类示例。我的猜测是缩放不是组织大量数据的好方法。

标签: java swing interface javafx java-7


【解决方案1】:

我只有核心 Java 7 JDK,谁能建议一个好的起点?

我建议使用JavaFX

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

实施注意事项

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

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

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

范围建议

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

JavaFX ZUI 示例

祝你的项目好运。 . .

【讨论】:

  • 谢谢jewelsea。我有一种感觉,JavaFX 可能是要走的路,我现在必须好好研究一下。我只使用过 Swing,所以我可能不得不从头开始!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
相关资源
最近更新 更多