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/
qml中TextField實現新增文字的上限,同時新增文字時,提示文字消失。
當點選請添寫工具名稱時,游標移動到如下: 新增文字後,請填寫工具名稱消失: 同時設定新增文字的上限是31個字元,當超過31個就不能再新增。 相關程式碼: import QtQuick 2.2 import QtQuick.Controls
eclipse中Tomcat啟動正常,但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 V4,SpectreRSB補丁
在為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 首先在提交程式碼的時候,會看到有的檔案前會有
mybits中mapper,selectOne查詢不出資料的問題,selectOne空指標問題,select空指標問題
selectOne查詢不出資料的問題AiWechatUser iWechatUser = new AiWechatUser(); iWechatUser.setOpenid("XXX"); iWechatUser= wechartUserDao.selectOne(iWechatUser