我已经用Java编程了一段时间但是从来没有真正使用swing包.我目前正在为A.I.设计GUI.呼叫和响应程序,尽管我一直在做的其余部分相对复杂(至少对我来说),这个图像加载问题,实现起来非常简单,让我感到难过.

如果不是在包中,下面的类可以工作,这真的让我感到困惑.我尝试了几种不同的实现建议(一个来自Head First Java,一个来自docs.oracle.com教程,另一个来自http://leepoint.net/notes-java/GUI-lowlevel/graphics/45imageicon.html建议).

package CaRII;

import java.util.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class P{

public static void main(String [] args){

P p = new P();

p.go();

}

public void go(){

JFrame frame = new JFrame("CaRRI: Call and Response Intelligent Improviser");

PBackground mainPanel = new PBackground();

frame.getContentPane().add(BorderLayout.CENTER, mainPanel);

frame.setSize(800,500);

frame.setVisible(true);

}

}

package CaRII;

import java.awt.*;

import javax.swing.*;

public class PBackground extends JPanel{

public Image backgroundImage;

public PBackground(){

backgroundImage = Toolkit.getDefaultToolkit().createImage("CaRIIBackGround.jpg");

}

public PBackground(LayoutManager layout){

backgroundImage = Toolkit.getDefaultToolkit().createImage("CaRIIBackGround.jpg");

}

public void paint(Graphics g){

g.drawImage(backgroundImage,0,0,null);

}

}

就像我说的奇怪的是,如果这两个类都在CaRRI包中,它就不显示图像;但是如果我在没有包声明的情况下编译并运行它们就可以正常运行(在窗口调整大小之前,这个图像没有加载…但是我已经在网上找到了这样的解决方案,所以一旦我在其中加载它,我就可以对它进行排序包).我一直在写XCode和JEdit,图像存储在源包内的包文件夹中(/src/CaRII/P.java … /src/CaRII/CaRIIBackGround.jpg),我也尝试将图像存储在/ src /中使用的资源文件夹

ImageIcon(getClass().getResource("/resources/CaRIIBackGround.jpg)).getImage();

但这会在运行时导致另一个错误

Exception in thread "main" java.lang.NullPointerException

at javax.swing.ImageIcon.(ImageIcon.java:181)

at CaRII.PBackground.(PBackground.java:19)

at CaRII.P.go(P.java:21)

at CaRII.P.main(P.java:15)

任何帮助都会非常感激,尽管它很简单,但是我整个上午一直困扰着我,还有很多其他的课程要写.

最佳答案

package CaRII;

import java.awt.*;

import java.awt.image.BufferedImage;

import javax.swing.*;

import java.net.URL;

import javax.imageio.ImageIO;

public class P{

public static void main(String [] args){

SwingUtilities.invokeLater(new Runnable() {

public void run() {

P p = new P();

p.go();

}

});

}

public void go(){

try {

JFrame frame = new JFrame("CaRRI: Call and Response Intelligent Improviser");

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

PBackground mainPanel = new PBackground();

frame.getContentPane().add(BorderLayout.CENTER, mainPanel);

//frame.setSize(800,500);

frame.pack();

frame.setMinimumSize(frame.getSize());

frame.setLocationByPlatform(true);

frame.setVisible(true);

} catch(Exception e) {

e.printStackTrace();

}

}

}

class PBackground extends JPanel{

public BufferedImage backgroundImage;

public PBackground() throws Exception {

URL url = new URL("http://desmond.imageshack.us/Himg189/" +

"scaled.php?server=189&filename=cariibackground.jpg&res=medium");

// You might form that URL using something like..

//URL url = this.getClass().getResource("/CaRIIBackGround.jpg");

backgroundImage = ImageIO.read(url);

Dimension d = new Dimension(

backgroundImage.getWidth(),

backgroundImage.getHeight());

setPreferredSize(d);

}

/* What was this supposed to achieve?

public PBackground(LayoutManager layout){

backgroundImage = Toolkit.getDefaultToolkit().createImage("CaRIIBackGround.jpg");

}

*/

// Don't override paint() in a Swing panel!

//public void paint(Graphics g){

@Override

public void paintComponent(Graphics g) {

// USE the ImageObserver!

//g.drawImage(backgroundImage,0,0,null);

g.drawImage(backgroundImage,0,0,getWidth(),getHeight(),this);

}

}

java一直显示载入中_java – 当类在包中时为GUI加载图像的问题相关推荐

  1. java缺省包详解_Java在其它包中无法引用缺省包中的类

    1.现象 1.1 问题场景 最近,在写测试代码时,将一个类(这里暂且称为ClassA)放在在缺省包中,也就是说,直接放在了src目录下,没有创建包.然后,将这个类打入了jar文件,提供给另外的工程(这 ...

  2. java中的stack类和C++中的stack类的区别

    文章目录 1 java中的stack类和C++中的stack类的区别 1.1 java中的stack类 1.2 C++中的stack类 1.3 分析 不经意间想到了这个问题,存到栈中的是对象的引用,还 ...

  3. Java中常用的类,包,接口

    Java中常用的类,包,接口 包名 说明 java.lang 该包提供了Java编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread等,不使用 ...

  4. mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...

    源自:3-6 JSP页面实现 为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢? 首先是index.jsp pageEncoding=&qu ...

  5. SDL 从内存流中加载图像并显示

    最近做项目需要实现这么一个功能,需要将Android平板上显示的内容实时传送到投影仪上显示. 连接投影仪的机器安装了 CentOS 6,采用 SDL 开发库做 UI 界面.系统本来的需求只要在投影仪上 ...

  6. app包中的fragment和v4包中的fragment的使用的区别

    转自 http://blog.csdn.net/a465456465/article/details/10415211 app包中的fragment和v4包中的fragment的使用的区别 1.尽量不 ...

  7. 查看类的实现类mac_自定义类加载器实现热加载

    一.实现的需求 当一个java被修改后,系统无需重启,替换的类立即生效,这里以Work.java为例 二.实现的思路 1)难点分析 当项目在执行的时候,我们修改了Work.java,这个类的class ...

  8. python异步加载图片_如何在PyQt5中正确异步加载图像?

    我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...

  9. 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据

    在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...

  10. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化

    python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...

最新文章

  1. python 中if __name__ = '__main__' 的作用
  2. 微信小程序 textarea 简易解决方案
  3. Linux疑难杂症解决方案100篇(十九)-什么是TCP协议中的“三次握手,四次挥手”?带你深入探讨下
  4. [解读REST] 3.基于网络应用的架构
  5. MySQL5.7数据库软件下载教程
  6. 管理低代码公民开发人员的8个技巧
  7. oracle一些基本命令
  8. tensorflow 转张量类型为float_一文看懂TensorFlow计算图
  9. JAVAWeb开发之Servlet-18.Servlet共享变量与变量的作用域
  10. 基于C#和DGAL包实现栅格影像的读取和显示
  11. python如何抓取微博定时热搜
  12. Linux之shell编程的shell工具
  13. Mac应用程序崩溃,无法启动的解决方法
  14. OSChina 周五乱弹 ——人类发明眼镜之前眼镜蛇叫什么?
  15. 每天数千个漏洞被公开 选什么工具能让漏洞追不上我?RASP介绍
  16. 如何删除掉设备和驱动器下百度网盘的图标
  17. uniapp uview 1.x设置遮罩层全屏loading
  18. python pptx 关于在ppt里插入表格,调整合并单元格的问题
  19. python3保存的npy文件,python2无法读取的可能解决方案。
  20. 云堡垒机和软件堡垒机哪个好?区别是什么?

热门文章

  1. c语言中用梯形法求定积分
  2. Android初窥门径
  3. java 组件是什么意思_java中组件是什么意思?
  4. win7电脑怎么伪装ip地址【系统天地】
  5. VS2016 调用matlab脚本 ——缺少mclmcr.dll
  6. 一定不要想当然啊!!
  7. 2021年中国牛肉市场供需现状、进出口贸易及价格走势分析[图]
  8. 联想笔记本G50-70无线网卡问题
  9. 蓝桥杯 方格计数 Java
  10. 计算机磁盘扩展,win7如何对硬盘进行扩展分区