JAVA學習筆記——ClassLoader中getResource方法的路徑參數
阿新 • • 發佈:2019-01-26
hid system java.awt plan 參數 異常 getc pat bubuko
代碼如下,代碼無需過多關註,看getResource使用的地方就可以,已用註釋標出。
1 import java.awt.Image; 2 import java.awt.image.BufferedImage; 3 import java.io.IOException; 4 import java.net.URL; 5 import javax.imageio.ImageIO; 6 7 public class GameUtil { 8 // 工具類最好將構造器私有化。 9 private GameUtil() { 10 11 }View Code12 13 public static Image getImage(String path) { 14 BufferedImage bi = null; 15 try { 16 //getResource方法調用處 17 URL u = GameUtil.class.getClassLoader().getResource(path); 18 bi = ImageIO.read(u); 19 } catch (IOException e) { 20 e.printStackTrace();21 } 22 return bi; 23 } 24 }
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.WindowEvent; 4 import java.awt.event.WindowAdapter; 5 6 public class GameFrame extends JFrame { 7 public static void main(String[] args){ 8 new GameFrame().lauchFrame();View Code9 } 10 11 public void lauchFrame(){ 12 setVisible(true); 13 setTitle("灰機大戰"); 14 setBounds(200, 50, 800, 700); 15 addWindowListener(new WindowAdapter(){ 16 @Override 17 public void windowClosing(WindowEvent e) { 18 System.exit(0); 19 } 20 }); 21 } 22 23 @Override 24 public void paint(Graphics g){ 25 g.drawImage(bgImage, 0, 0, null); 26 g.drawImage(planeImage, 400, 650, null); 27 } 28 29 //給getResource方法傳入參數 30 private Image bgImage = GameUtil.getImage("material/bg.jpg"); 31 private Image planeImage = GameUtil.getImage("material/plane.png"); 32 }
程序運行時拋出異常,原因是resource(即要加載進程序的文件)所存放路徑不對,需放到getResource默認路徑下,解決方法如下:
解決,先得知getSource方法默認路徑:
圖示為需要把程序所要用的資源文件放到JavaSe文件夾裏。
註:默認路徑下已有“/“斜杠,所以傳入參數時前面無需再加"/"。
JAVA學習筆記——ClassLoader中getResource方法的路徑參數