那位大神来解答一下,谢谢!!!
编译无错误,图片放置位置正确,运行时出现以下内容,并没有显示图片,只显示了窗体。
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at java.desktop/sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:653)
at java.desktop/sun.awt.SunToolkit.getImage(SunToolkit.java:689)
at com.day1.MyPanel.paint(Picture_1.java:71)
at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
at java.desktop/javax.swing.JComponent.paint(JComponent.java:1083)
at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:590)
at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:907)
at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5262)
at java.desktop/javax.swing.RepaintManager
P
a
i
n
t
M
a
n
a
g
e
r
.
p
a
i
n
t
D
o
u
b
l
e
B
u
f
f
e
r
e
d
I
m
p
l
(
R
e
p
a
i
n
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1643
)
a
t
j
a
v
a
.
d
e
s
k
t
o
p
/
j
a
v
a
x
.
s
w
i
n
g
.
R
e
p
a
i
n
t
M
a
n
a
g
e
r
PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643) at java.desktop/javax.swing.RepaintManager
PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)atjava.desktop/javax.swing.RepaintManagerPaintManager.paintDoubleBuffered(RepaintManager.java:1618)
at java.desktop/javax.swing.RepaintManager
P
a
i
n
t
M
a
n
a
g
e
r
.
p
a
i
n
t
(
R
e
p
a
i
n
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1556
)
a
t
j
a
v
a
.
d
e
s
k
t
o
p
/
j
a
v
a
x
.
s
w
i
n
g
.
R
e
p
a
i
n
t
M
a
n
a
g
e
r
.
p
a
i
n
t
(
R
e
p
a
i
n
t
M
a
n
a
g
e
r
.
j
a
v
a
:
1323
)
a
t
j
a
v
a
.
d
e
s
k
t
o
p
/
j
a
v
a
x
.
s
w
i
n
g
.
J
C
o
m
p
o
n
e
n
t
.
p
a
i
n
t
(
J
C
o
m
p
o
n
e
n
t
.
j
a
v
a
:
1060
)
a
t
j
a
v
a
.
d
e
s
k
t
o
p
/
j
a
v
a
.
a
w
t
.
G
r
a
p
h
i
c
s
C
a
l
l
b
a
c
k
PaintManager.paint(RepaintManager.java:1556) at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323) at java.desktop/javax.swing.JComponent.paint(JComponent.java:1060) at java.desktop/java.awt.GraphicsCallback
PaintManager.paint(RepaintManager.java:1556)atjava.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)atjava.desktop/javax.swing.JComponent.paint(JComponent.java:1060)atjava.desktop/java.awt.GraphicsCallbackPaintCallback.run(GraphicsCallback.java:39)
at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.desktop/java.awt.Container.paint(Container.java:2002)
at java.desktop/java.awt.Window.paint(Window.java:3926)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:876)
at java.desktop/javax.swing.RepaintManager
4.
r
u
n
(
R
e
p
a
i
n
t
M
a
n
a
g
e
r
.
j
a
v
a
:
848
)
a
t
j
a
v
a
.
b
a
s
e
/
j
a
v
a
.
s
e
c
u
r
i
t
y
.
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
d
o
P
r
i
v
i
l
e
g
e
d
(
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
j
a
v
a
:
389
)
a
t
j
a
v
a
.
b
a
s
e
/
j
a
v
a
.
s
e
c
u
r
i
t
y
.
P
r
o
t
e
c
t
i
o
n
D
o
m
a
i
n
4.run(RepaintManager.java:848) at java.base/java.security.AccessController.doPrivileged(AccessController.java:389) at java.base/java.security.ProtectionDomain
4.run(RepaintManager.java:848)atjava.base/java.security.AccessController.doPrivileged(AccessController.java:389)atjava.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue
4.
r
u
n
(
E
v
e
n
t
Q
u
e
u
e
.
j
a
v
a
:
715
)
a
t
j
a
v
a
.
b
a
s
e
/
j
a
v
a
.
s
e
c
u
r
i
t
y
.
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
d
o
P
r
i
v
i
l
e
g
e
d
(
A
c
c
e
s
s
C
o
n
t
r
o
l
l
e
r
.
j
a
v
a
:
389
)
a
t
j
a
v
a
.
b
a
s
e
/
j
a
v
a
.
s
e
c
u
r
i
t
y
.
P
r
o
t
e
c
t
i
o
n
D
o
m
a
i
n
4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:389) at java.base/java.security.ProtectionDomain
4.run(EventQueue.java:715)atjava.base/java.security.AccessController.doPrivileged(AccessController.java:389)atjava.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
package com.day1;
import java.awt.*;
import javax.swing.*;
public class Picture_1 extends JFrame{
MyPanel mp=null;//创建mypanel
public static void main(String[] args) {
Picture_1 pt=new Picture_1();//创建并初始化picture_1,将自动调用paint方法。
}
public Picture_1()
{
mp=new MyPanel();//初始化panel
this.add(mp);//加入JFrame
this.setSize(600,300);//JFrame尺寸
this.setTitle("画图片");//标题
//关闭时关闭虚拟机
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);//显示窗体
//this.setLocation(200,200);//窗体初始位置
//this.setResizable(false);//不能改变大小
}
}
class MyPanel extends JPanel//创建一个MyPanel类,继承JPanel
{
//Graphics是绘图的重要类,它可以理解成一支画笔,用它画图按
public void paint(Graphics g)//覆盖JPanel的paint方法
{
super.paint(g);//调用父类函数,完成初始化,这句话不能少
//画一个图片,
Image im=Toolkit.getDefaultToolkit().getImage
(Panel.class.getResource("/j0384862.jpg"));
//实现图片
g.drawImage(im, 10, 10, 100 , 150, this);
}
}