我已经用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. LeetCode之Sqrt(x)
  2. react获取全局_使用react hooks实现的简单全局状态管理
  3. 陌生人交友IM即时聊天系统-得推交友系统v3.0源码
  4. 中欧 PHP 开发者大会因多元化争议而取消
  5. 作为企业创业者的老板,只要把这十八个方面做正确就好
  6. ubuntu10.04以及10.10安装配置tftp服务
  7. linux最常用命令
  8. matlab,python 写kml文件(点,线,多边形)
  9. Hadoop集群安装配置教程_Hadoop2.6.0_UbuntuCentOS(林子雨教授,超级详细)
  10. 韦恩州立大学计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名韦恩州立大学排名第301-400...
  11. 长沙小吃比较好吃and著名的地方
  12. 企业微信群机器人是什么?企微机器人如何自动发消息?
  13. 质量管理14条原则、敏捷开发宣言、敏捷开发十二原则
  14. 浏览器网页视频怎么快速下载到本地?
  15. 计算机组成原理-第一章 计算机系统概述(详细知识点总结)
  16. unity3d英语单词拼写小游戏Pics Quiz Maker With Categories 3.0
  17. ABB机器人ProgramEditor(程序编辑器)调试菜单详解
  18. 2023新春快乐,兔年大吉!
  19. 帕斯卡三角形html,数学之美:杨辉三角(帕斯卡三角)的奇特性质
  20. 2022广州国际食品饮料包装展览会

热门文章

  1. win10小娜_win10小娜不好用,想禁用或彻底删除Cortana,就用这2招
  2. mysql chinanet外网连接不上_笔记本电脑无法连接到ChinaNet无线网络怎么解决?
  3. 【Watery DP】[Dota1002]光之守卫(Gandolf)
  4. 谢烟客---------Linux之权限
  5. 迪士尼电影经过多年的
  6. java数青蛙_LeetCode 1419. 数青蛙
  7. ECCV2016 paper list (完整版)
  8. gephi和python_python+nlp+Gephi 分析电视剧【人民的名义】
  9. HTB Devel[Hack The Box HTB靶场]writeup系列3
  10. 【解决】电脑开给手机开热点问题