import java.util.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.*;public class Photo extends JPanel {
//图片大小。
final int pw = 60;
final int ph = 60;
//图片初始位置。
private int x1 = 700;
private int y1 = 500;
//图片是否存在。
private boolean live ;  ImageIcon p = new ImageIcon("A_1.jpg");

 
Image p1 = p.getImage();

public void paintComponent(Graphics g){

  g.setColor(Color.PINK);
  g.fillRect(0,0, 800,600);  
//******************************************************************
  g.clearRect(x1,y1,pw,ph);
  g.drawImage(p1,x1,y1,pw,ph,this); 
this.addMouseListener(new MouseAdapter(){
  public void mouseClicked(MouseEvent e) {
live = false;
}
  });
  if(live){
  g.setColor(Color.PINK);
  g.fillRect(0,0, 800,600);  
  
  }
//******************************************************************
}
}
**之间的 代码 我想实现,图片的调用,并且不会掩盖住原来的背景色。
加一个监听--->但鼠标点击时候,图片会消失。求指点

解决方案 »

  1.   

    你的 add 监听器的方法怎么能放在
    paintComponent 里面,这样每次重绘一次都会新加一个监听器上去,
    点多了小心内存溢出add 监听器,应该在构造时只加一次就好了
      

  2.   


    this.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e) {
    live = false;
    }
    });//这个监听放在构造方法里,paint里面画画图就好了//*************************************if(live)
    {
        g.clearRect(x1,y1,pw,ph);
        g.drawImage(p1,x1,y1,pw,ph,this);

    //*************************************
    //不知道这样可不可以。。