1. 程式人生 > >eclipse中新增圖片URL,提示空指標

eclipse中新增圖片URL,提示空指標

以下是學習過程中,書上的例項程式碼,博主對著敲了一遍卻無法執行。

import java.awt.*;
import java.net.URL;
import javax.swing.*;
public class SwingAndThread extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel jl = new JLabel(); // 宣告JLabel物件
	private static Thread t; // 宣告執行緒物件
	private int count = 0; // 宣告計數變數
	private Container container = getContentPane(); // 宣告容器
	
	public SwingAndThread() {
		setBounds(300, 200, 250, 100); // 絕對定位窗體大小與位置
		container.setLayout(null); // 使窗體不使用任何佈局管理器
		URL url = SwingAndThread.class.getResource("/1.gif"); // 獲取圖片的URL
		Icon icon = new ImageIcon(url); // 例項化一個Icon
		jl.setIcon(icon); // 將圖示放置在標籤中
		 // 設定圖片在標籤的最左方
		jl.setHorizontalAlignment(SwingConstants.LEFT);
		jl.setBounds(10, 10, 200, 50); // 設定標籤的位置與大小
		jl.setOpaque(true);
		t = new Thread(new Runnable() { // 定義匿名內部類,該類實現Runnable介面
					public void run() { // 重寫run()方法
						while (count <= 200) { // 設定迴圈條件
							 // 將標籤的橫座標用變量表示
							jl.setBounds(count, 10, 200, 50);
							try {
								Thread.sleep(1000); // 使執行緒休眠1000毫秒
							} catch (Exception e) {
								e.printStackTrace();
							}
							count += 4; // 使橫座標每次增加4
							if (count == 200) {
								// 當圖示到達標籤的最右邊,使其回到標籤最左邊
								count = 10;
							}
						}
					}
				});
		t.start(); // 啟動執行緒
		container.add(jl); // 將標籤新增到容器中
		setVisible(true); // 使窗體可視
		// 設定窗體的關閉方式
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	
	public static void main(String[] args) {
		new SwingAndThread(); // 例項化一個SwingAndThread物件
	}
}


報錯資訊如下:

Exception in thread "main" java.lang.NullPointerException
	at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
	at SwingAndThread.<init>(SwingAndThread.java:19)
	at SwingAndThread.main(SwingAndThread.java:51)

但是卻可以通過命令列成功執行:


原因在於:

URL url = SwingAndThread.class.getResource("/1.gif"); // 獲取圖片的URL


觀察專案資料夾的目錄如上圖,有一個src目錄,這是JAVA原始檔的目錄,有一個bin目錄,這是JAVA編譯後文件(.class檔案等)的存放目錄。

解決方案如下圖 :


即在bin資料夾中新增該圖片檔案。

你想新增圖片的URL,你得從最終生成的.class檔案為著手點,不要以.java檔案的路徑為出發點,因為真正使用的就是.class,不會拿個.java檔案就使用,因為java是編譯型語言。

 所以當我們想要使用getResource()方法時,就只好把檔案放在.class檔案相同目錄下或者它的父目錄中了。

或者,直接用絕對路徑,不用getResource()方法,但是使用絕對路徑,有違java一次編譯,處處執行的精神


相關推薦

eclipse新增圖片URL提示指標

以下是學習過程中,書上的例項程式碼,博主對著敲了一遍卻無法執行。 import java.awt.*; import java.net.URL; import javax.swing.*; public class SwingAndThread extends JFram

Android-三星手機利用ImageLoader載入系統圖片的時候提示指標導致崩潰

專案中的app需要獲取手機圖片用來設定頭像,於是在網上找了個仿微信圖片載入的程式碼,小米、vivo、華為手機都沒有出現問題。但是在三星的手機上崩潰了。 現象:報空指標:java.lang.NullPointerException: Attempt to invoke vir

如何在eclipse新增程式碼檢查外掛實時提示檢查問題eclipse+sonarLint+sonarqube平臺程式碼檢查規則

在eclipse中引入sonarLint外掛 步驟如下: 1、sonarLint安裝 開啟eclipse後,執行    help->Eclipse Marketplace->查詢sonarLint        

模擬select在option新增圖片

<div class="changeState"> <div class="position-rel"> <div class="bank_xljt"> <img class="jt_x

向QWidget新增圖片並使圖片隨窗體大小縮放

向QWidget中新增圖片有多種方式,其中一種方法如下: // 部分核心程式碼片段 在Qt 5.7中編譯通過 QWidget * widget = new QWidget; widget->setAtuoFillBackground(true); Q

如何在eclipse安裝aptana外掛並有智慧提示

安裝方法: 2、在myeclipse安裝目錄底下新建資料夾myPlugin,用於專門管理外掛資料夾,比如我的安裝目錄下是E:\Program Files\MyEclipse\MyEclipse 10\myPlugin,在myPlugin底下新建aptana資料夾,用於

獲取sd卡圖片URL並顯示同時使用ImageView把選擇的圖片展現出來

配置檔案get_picture_url.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

qmlTextField實現新增文字的上限同時新增文字時提示文字消失。

當點選請添寫工具名稱時,游標移動到如下: 新增文字後,請填寫工具名稱消失: 同時設定新增文字的上限是31個字元,當超過31個就不能再新增。 相關程式碼: import QtQuick 2.2 import QtQuick.Controls

eclipseTomcat啟動正常但Debug啟動超時無法啟動

   啟動tomcat時,在Run模式(即正常啟動時)可以正常啟動;但是在Debug模式下無法正常啟動。      二、解決方法    進入Debug檢視,將所有斷點刪除即可。

記錄Android開發一個小坑佈局檔案TextView新增onClick後點選無效問題

自己寫東西的時候,在TextView上添加了onClick去增加點選事件,去跳轉另一個Activity,執行後結果點選無效,新增Toast,Toast也不顯示,程式碼如下: <TextView android:layout_width="wrap_content"

Notification Android8.0無法傳送通知提示:No Channel found for pkg

用Android 8.0的手機進行傳送通知的測試,發現通知不能在系統狀態列顯示出來,檢視Logcat,發現warning如下 No Channel found for pkg=com.example.xx.xx, channelId=null, id=1001, tag=null…

教學課件PPT新增圖片如何操作

教學課件PPT目前深受老師們的喜愛,各個科目、各個年齡層的老師都喜歡使用教學課件PPT進行授課。因為教學課件PPT使用起來很方便,上課效果也很好。大家都知道在教學課件PPT當中不單單只是教學文字內容,也會配以圖片,這樣不會顯得枯燥無味。今天小編就教給大家怎麼在教學課件PPT中新增圖片。 步驟如下: 老

eclipse新增本地tomcat的設定

1    開啟windows-> preferences-> server-> Runtime Environment   點選右側的add按鈕進行新增, 在新增選項中新增本地tomcat的安裝目錄即可(是bin目錄的上一級).   2  在service

Eclipse新增Android系統jar包

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Eclipse修改包名提交SVN時報 is out of date怎麼辦?

問題:Eclipse中修改包名,提交SVN時報 is out of date,怎麼辦?描述: Hi,大家好!     我的問題如題,在不考慮用TortoiseSVN客戶端直接刪除目錄這個方法的情況下,有什麼方法能夠解決ECLIPSE下修改程式碼包名,提交SVN導致is out of d

在textView新增圖片並設定圖片大小

在TextView中新增圖片並設定圖片大小,按照如下方法即可: Drawable drawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.icon_arrow_mine);   &nb

Canonical在新版Ubuntu 18.04 LTS Azure核心新增Spectre V4SpectreRSB補丁

在為Ubuntu 16.04 LTS(Xenial Xerus)和Ubuntu 14.04 LTS(Trusty Tahr)作業系統系列釋出新的核心安全更新後,Canonical釋出了針對Microsoft Azure雲系統的Linux核心的相應更新。 新的Azure核心也由Jann Horn發現,它修復

(原創)超詳細一步一步在eclipse配置Struts2環境無基礎也能看懂

    (原創)超詳細一步一步在eclipse中配置Struts2環境,無基礎也能看懂  1. 在官網https://struts.apache.org下載Struts2,建議下載2.3系列版本。從圖中可以看出,既可以分開下載子檔案,又可以一次全部下載。 這裡我後

eclipse使用svn提交更新程式碼。

在新公司工作,版本管理工具變成了svn,之前一直用git作為版本管理,用的編輯IDE是IntelliJIDEA,在這個編輯器下工作,還是很方便的,但是現在使用eclipse和svn。有點不習慣,但還是將他們記下來。 這篇文章介紹的是在eclipse上使用svn 首先在提交程式碼的時候,會看到有的檔案前會有

mybitsmapperselectOne查詢不出資料的問題selectOne指標問題select指標問題

 selectOne查詢不出資料的問題AiWechatUser iWechatUser = new AiWechatUser(); iWechatUser.setOpenid("XXX"); iWechatUser= wechartUserDao.selectOne(iWechatUser