Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 如何获得Image对象的问题!
wqq0712





发贴: 26
积分: 0
于 2006-09-06 22:53 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
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_ARGBlack Eye;
    bimage2=new BufferedImage(images.getWidth(this),images.getHeight(this),BufferedImage.TYPE_INT_ARGBlack Eye;
    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.paintComponentPresent;
  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()<x+bimage1.getWidth(this)&&e.getY()>=y&&e.getY()<y+bimage1.getHeight(this))
  {
    
    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);
}
}




话题树型展开
人气 标题 作者 字数 发贴时间
8188 如何获得Image对象的问题! wqq0712 3243 2006-09-06 22:53
7299 Re:如何获得Image对象的问题! 肩膀上的阳光 6 2006-09-07 10:32
6898 Re:如何获得Image对象的问题! wqq0712 17 2006-09-09 19:29
6820 Re:如何获得Image对象的问题! lisliefor 202 2006-09-11 10:56
6757 Re:如何获得Image对象的问题! lisliefor 125 2006-09-11 11:18
6771 Re:如何获得Image对象的问题! lisliefor 328 2006-09-11 11:21
7101 Re:如何获得Image对象的问题! wqq0712 346 2006-09-12 14:30

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923