java 获取image对象_Java开发网 - 如何获得Image对象的问题!

Posted by:wqq0712

Posted on:2006-09-06 22:53

import java.awt.event.*;

import java.awt.*;

import java.awt.image.*;

import javax.swing.*;

public class PictureMove extends JFrame

{

public PictureMove()

{

this.getContentPane().add(new MyPanel());

setTitle("用鼠标拖动图象");

setSize(400,400);

setVisible(true);

}

public static void main(String[] args)

{

new PictureMove();

}

}

class MyPanel extends JPanel implements MouseMotionListener,MouseListener

{

int x=0,y=0;

int dx=0,dy=0;

BufferedImage bimage1,bimage2;

boolean downState=false;

public MyPanel()

{

this.setBackground(Color.WHITE);

this.addMouseMotionListener(this);

this.addMouseListener(this);

//Image images=getToolkit().getImage("yyyy.jpg"); //问题所在!!!!!!!!

Image images=new ImageIcon("yyyy.jpg").getImage(); //我自己添加的!!!!!!

if(images.getWidth(this)==-1)

{

System.out.println("不能打开图象");

System.exit(-1);

}

bimage1=new BufferedImage(images.getWidth(this),images.getHeight(this),BufferedImage.TYPE_INT_ARG

smile_blackeye.gif;

bimage2=new BufferedImage(images.getWidth(this),images.getHeight(this),BufferedImage.TYPE_INT_ARG

smile_blackeye.gif;

Graphics2D g2D1=bimage1.createGraphics();

Graphics2D g2D2=bimage2.createGraphics();

g2D1.drawImage(images,0,0,this);

g2D2.drawImage(images,0,0,this);

g2D2.drawRect(1,1,images.getWidth(this)-3,images.getHeight(this)-3);

}

public void paintComponent(Graphics g)

{

super.paintComponent

present_smile.gif;

Graphics2D g2D=(Graphics2D)g;

if(!downState)

g2D.drawImage(bimage1,x,y,this);

else

g2D.drawImage(bimage2,x,y,this);

}

public void mousePressed(MouseEvent e)

{

if(e.getX()>=x&&e.getX()=y&&e.getY()

{

downState=true;

setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

dx=e.getX()-x;

dy=e.getY()-y;

repaint();

}

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void mouseReleased(MouseEvent e)

{

this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

downState=false;

repaint();

}

public void mouseMoved(MouseEvent e){}

public void mouseDragged(MouseEvent e)

{

if(downState)

{

x=e.getX()-dx;y=e.getY()-dy;

repaint();

}

}

}

上面这个程序 注释掉的那句是课本的原样~~可是我怎么运行都是:不能打开图象!

我自己写的那句 可以显示图片!!

我想知道具体那2句有什么区别呢?是否跟缓冲区有关系?希望高手帮忙详细解说~~或者指出我的错误之处!~谢谢~~

而下面这段程序 用Image im=new ImageIcon("yyyy.jpg").getImage(); 却有问题!为什么呢!

import java.awt.*;

import java.awt.event.*;

public class Pic extends Frame {

Image im;

static public void main(String args[])

{

Pic p = new Pic();

p.show();

}

public Pic()

{

super("Image Test");

//im = Toolkit.getDefaultToolkit().getImage("yyyy.jpg");

//im=this.getToolkit().getImage("yyyy.jpg");

im=new ImageIcon("yyyy.jpg").getImage();

setSize(400,400);

setVisible(true);

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent event) {

dispose();

System.exit(0);

}

});

}

public void paint(Graphics g) {

g.drawImage(im, 0, 0, this);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值