请问为什么JPanel中drawImage函数画不出图片代码如下:
public class Face extends Frame{ public Face (String str){
super(str);
} public static void main(String args[ ]){
Frame ff = new Face("gui");
Mypanel panel = new Mypanel();
ff.add(panel);
ActionListener al = new ActionListener();
ff.addWindowListener(al);
ff.setVisible(true);
}
} class Mypanel extends javax.swing.JPanel
{
public void paint(Graphics g) {
Image image= Toolkit.getDefaultToolkit().createImage("33.jpg"); g.drawImage(image,100,100,this);
}
public void paintComponent(Graphics g) {
Image image= Toolkit.getDefaultToolkit().createImage("33.jpg"); g.drawImage(image,100,100,this);
}
}
无论重载paint,或paintComponent都不行,没有看到图片画出,请高手指点原因。
public class Face extends Frame{ public Face (String str){
super(str);
} public static void main(String args[ ]){
Frame ff = new Face("gui");
Mypanel panel = new Mypanel();
ff.add(panel);
ActionListener al = new ActionListener();
ff.addWindowListener(al);
ff.setVisible(true);
}
} class Mypanel extends javax.swing.JPanel
{
public void paint(Graphics g) {
Image image= Toolkit.getDefaultToolkit().createImage("33.jpg"); g.drawImage(image,100,100,this);
}
public void paintComponent(Graphics g) {
Image image= Toolkit.getDefaultToolkit().createImage("33.jpg"); g.drawImage(image,100,100,this);
}
}
无论重载paint,或paintComponent都不行,没有看到图片画出,请高手指点原因。
楼主【orangeabc】截止到2008-07-20 12:27:31的历史汇总数据(不包括此帖):
发帖的总数量:18 发帖的总分数:360 每贴平均分数:20
回帖的总数量:10 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:2 结贴的总分数:40
无满意结贴数:0 无满意结贴分:0
未结的帖子数:16 未结的总分数:320
结贴的百分比:11.11 % 结分的百分比:11.11 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Face extends JFrame // 改成了JFrame,强烈建议不要使用AWT的组件
{
//序列化字段,可以删除
private static final long serialVersionUID = -1743769932464390769L; public Face(String str)
{
super(str);
} public static void main(String args[])
{
// 为什么声明成final,下面有讲
final JFrame ff = new Face("gui");
Mypanel panel = new Mypanel(); ff.add(panel); // 我不知道你到底想干什么,ActionListener是接口,不能实例化
// ActionListener al = new ActionListener();
// addWindowListener不能添加ActionListener
// ff.addWindowListener(al); // ===============================================
WindowListener al = new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// ff在内部类里使用,必须声明成final
ff.dispose();
}
};
ff.addWindowListener(al);
// =============================================== // 上面一块可以用下面一行代替,功能相同
// ff.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置初始大小
ff.setSize(600, 500);
// 设置初始时位于屏幕中间
ff.setLocationRelativeTo(null);
ff.setVisible(true);
}
}class Mypanel extends JPanel
{
// 序列化字段,可以删除
private static final long serialVersionUID = 8094515598516460551L; public void paintComponent(Graphics g)
{
// 这样创建的图片似乎画不出来
// Image image = Toolkit.getDefaultToolkit().createImage("33.jpg");
// 图片33.jpg的位置在项目根目录下
Image image = new ImageIcon("33.jpg").getImage();
g.drawImage(image, 100, 100, this);
}
}