将JPG加载到Swing Apps中

IAm*_*aja 4 java swing image-processing

我想我在这里遭受了一些阶级忧郁.我一直在关注这些例子.我阅读了教程.但似乎没有什么对我有用.

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

让我们说我有一个Swing应用程序,JPanel我想将这个JPEG添加到JPanel(定位/布局无关紧要).

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

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

请指教......我今天中午以来一直在处理这个......以及它的午夜.提前感谢任何正确方向的推动.

And*_*son 10

String someIconUri = "C:\Users\MyUser\someIcon.jpeg";
Run Code Online (Sandbox Code Playgroud)

不,它不是'某个图标URI',它根本不是有效的URI.来想想它,它甚至不是一个可编辑的声明,因为String包含非法的逃避字符!

它可能是......

String someIconUri = "file:///C:/Users/MyUser/someIcon.jpeg";
Run Code Online (Sandbox Code Playgroud)

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


但这实际上只是"答案的一部分".这就是原因.

在这种情况下,基本上有两种类型的资源.应用程序资源和(为了更好的词)用户资源.

应用资源.

这些资源可能包括框架图标,按钮和菜单图标(Action图标),标签图标等.帮助文件(和相关图像),启动图像..

应将它们添加到单独的Jar(最常见)并添加到应用程序的运行时类路径中(使用清单或其他方式,如applet元素或JNLP文件).

应通过URL访问应用程序资源,可以使用getResource()以下方式获取:

URL iconUrl = this.getClass().getResource("/icons/copy.jpg");
Run Code Online (Sandbox Code Playgroud)

用户资源.

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

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

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


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

最后一个对于在内存中生成的内容很有用,或者从诸如套接字或JNLP API FileContents对象之类的源中获取.后者对于沙盒应用程序特别感兴趣.使用Java Web Start启动或嵌入.