1

我正在学习 JSF 2.0 并且我有ImageIcon一个班级。我可以把这个展示ImageIcon给 JSF 页面吗?

4

2 回答 2

3

存在一些重大的概念性误解。

Java/JSF 在网络服务器上运行并生成 HTML。HTML 在 webbrowser 上运行,可以通过<link>,<script><img>元素中的(相对)URL 引用 CSS/JS/image 文件。ImageIcon是 Swing 的一部分,与这一切无关。

Swing 根本不生成任何 HTML。当您仍然尝试在由 HTTP 请求调用的 Java 类中“以 Swing 方式”运行它时,例如 JSF 支持 bean 类甚至是“普通的”servlet 类,那么它只会显示在屏幕上它连接到运行网络服务器的物理机器,而不是运行网络浏览器的物理机器(这正是运行 HTML 的地方)。

最终,您需要通过普通的 HTML 方式显示图标。也就是说,使用<img>元素,或者可能在具有 CSSbackground-image属性的块元素上。无论哪种方式,他们都必须指向一个返回图像的有效 URL(也就是说,当最终用户在浏览器的地址栏中输入该 URL 时,它应该看到完整的图像)。通常,这是通过将图像文件放置在公共 Web 内容中来实现的(您还存储 JSF (XHTML/JSP) 页面的地方。

在 JSF 中,您可以<img>使用组件生成 HTML 元素<h:graphicImage>。提供了以下 webcontent 文件夹结构

WebContent
 |-- META-INF
 |-- WEB-INF
 |-- resources
 |    `-- images
 |         `-- icon.png
 `-- index.xhtml

和以下组件index.xhtml

<h:graphicImage name="images/icon.png" />

那么最终用户应该能够通过打开来看到所需的图像index.xhtml

另一种方法是创建一个基于 Swing 的小程序webstart (JNLP)应用程序,将图像显示为ImageIcon并最终通过 HTML<applet><object>网页中的元素将其嵌入。但这很笨拙。

于 2013-01-10T01:55:44.320 回答
2

除了将其呈现为服务器端的图像之外,我想说小程序将是ImageIcon进入网页的唯一另一种方法。

于 2013-01-10T01:27:59.650 回答