java一直显示载入中_java – 当类在包中时为GUI加载图像的问题
我已经用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加载图像的问题相关推荐
- java缺省包详解_Java在其它包中无法引用缺省包中的类
1.现象 1.1 问题场景 最近,在写测试代码时,将一个类(这里暂且称为ClassA)放在在缺省包中,也就是说,直接放在了src目录下,没有创建包.然后,将这个类打入了jar文件,提供给另外的工程(这 ...
- java中的stack类和C++中的stack类的区别
文章目录 1 java中的stack类和C++中的stack类的区别 1.1 java中的stack类 1.2 C++中的stack类 1.3 分析 不经意间想到了这个问题,存到栈中的是对象的引用,还 ...
- Java中常用的类,包,接口
Java中常用的类,包,接口 包名 说明 java.lang 该包提供了Java编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread等,不使用 ...
- mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...
源自:3-6 JSP页面实现 为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢? 首先是index.jsp pageEncoding=&qu ...
- SDL 从内存流中加载图像并显示
最近做项目需要实现这么一个功能,需要将Android平板上显示的内容实时传送到投影仪上显示. 连接投影仪的机器安装了 CentOS 6,采用 SDL 开发库做 UI 界面.系统本来的需求只要在投影仪上 ...
- app包中的fragment和v4包中的fragment的使用的区别
转自 http://blog.csdn.net/a465456465/article/details/10415211 app包中的fragment和v4包中的fragment的使用的区别 1.尽量不 ...
- 查看类的实现类mac_自定义类加载器实现热加载
一.实现的需求 当一个java被修改后,系统无需重启,替换的类立即生效,这里以Work.java为例 二.实现的思路 1)难点分析 当项目在执行的时候,我们修改了Work.java,这个类的class ...
- python异步加载图片_如何在PyQt5中正确异步加载图像?
我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...
- 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据
在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...
- python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化
python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...
最新文章
- python 中if __name__ = '__main__' 的作用
- 微信小程序 textarea 简易解决方案
- Linux疑难杂症解决方案100篇(十九)-什么是TCP协议中的“三次握手,四次挥手”?带你深入探讨下
- [解读REST] 3.基于网络应用的架构
- MySQL5.7数据库软件下载教程
- 管理低代码公民开发人员的8个技巧
- oracle一些基本命令
- tensorflow 转张量类型为float_一文看懂TensorFlow计算图
- JAVAWeb开发之Servlet-18.Servlet共享变量与变量的作用域
- 基于C#和DGAL包实现栅格影像的读取和显示
- python如何抓取微博定时热搜
- Linux之shell编程的shell工具
- Mac应用程序崩溃,无法启动的解决方法
- OSChina 周五乱弹 ——人类发明眼镜之前眼镜蛇叫什么?
- 每天数千个漏洞被公开 选什么工具能让漏洞追不上我?RASP介绍
- 如何删除掉设备和驱动器下百度网盘的图标
- uniapp uview 1.x设置遮罩层全屏loading
- python pptx 关于在ppt里插入表格,调整合并单元格的问题
- python3保存的npy文件,python2无法读取的可能解决方案。
- 云堡垒机和软件堡垒机哪个好?区别是什么?