java - 将 JPG 文件加载到 Swing 应用程序中

标签 java swing image-processing

我想我在这里遭受了一些类路径忧郁症。我一直在关注 examples .我读了tutorials .但似乎没有什么对我有用。

假设我在以下 URI 中有一个 JPEG:C:\Users\MyUser\someIcon.jpeg

假设我有一个带有 JPanel 的 Swing 应用程序,我想将这个 JPEG 添加到 JPanel 中(定位/布局无关紧要)。

SO 如何实现这一点? 我没有收到任何错误或异常,只是没有看到 JPEG 加载。我尝试使用的代码是这样的:

String someIconUri = "C:\Users\MyUser\someIcon.jpeg";
URL imageUrl = getClass().getResource(someIconUri);
ImageIcon imageIcon = new ImageIcon(imageUrl);
myPanel.add(imageIcon);

请告知...我从今天中午开始就一直在处理这个问题...现在是午夜。提前感谢您在正确方向上的任何插入

最佳答案

String someIconUri = "C:\Users\MyUser\someIcon.jpeg";

不,它不是“某个图标 URI”,它根本不是一个有效的 URI。仔细想想,它甚至不是一个可编译的语句,因为 String 包含非法的转义字符!

这可能是……

String someIconUri = "file:///C:/Users/MyUser/someIcon.jpeg";

但是 getResource() 既不需要也没有用,因为它只会在运行时类路径上定位资源。只需直接从 String 构建一个 URL


但这实际上只是“答案的一部分”。原因如下。

在这种情况下,基本上有两种类型的资源。应用程序资源和(需要一个更好的词)用户资源。

应用资源。

这些资源可能包括框架图标、按钮和菜单图标(Action 图标)、选项卡图标等内容。帮助文件(和相关图像)、启动图像..

它们应该被添加到一个单独的 Jar(最常见)并添加到应用程序的运行时类路径(使用 list 或其他方式,如 applet 元素或 JNLP 文件)。

应用资源应该通过URL访问,可以使用getResource()获取:

URL iconUrl = this.getClass().getResource("/icons/copy.jpg");

用户资源。

用户想要打开(编辑/打印)现有的文本文档,从图像帧制作动画 GIF,在他们的文件系统上编辑图像..

对于这些类型的资源(假设应用程序是受信任的或没有安全管理器),为用户提供 JFileChooser .它将返回一个特定的、现有的 File 或更多(取决于配置和使用方式)。

在那种情况下,永远不要将 File 转换为其他任何东西,只需直接使用实例即可。


大多数从资源(值得一提)获取输入的方法将接受File URL InputStream .

最后一个对于在内存中生成的东西或从套接字或 JNLP API 等来源获取的东西很有用 FileContents目的。后者对沙盒 应用特别有用。使用 Java Web Start 启动或嵌入.

关于java - 将 JPG 文件加载到 Swing 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462029/

相关文章:

image-processing - (生物)使用 OpenCV 进行细胞识别

matlab - 在 MATLAB 中的许多图像上叠加时间戳

java - 如何简化我的java代码,它包含更多的ArrayList来存储值

java - Eclipse 控制台打印文字不正确

java - Android Billing 如何使用 setAccountId 或将付款分配给自定义标识符

java - 在 ComponentListener 中传递 2 个对象以及这些对象

java - 如何将组合框值插入 Excel 工作表

java - 自定义文本字段 UI 外观和感觉

java - 是否有 Java IDE 具有 Visual Studio 风格的 JIT 功能、断点和查看进程的能力?

python-2.7 - 在 Anaconda 中安装 opencv python 包