import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
class  MyWindow extends Window implements MouseListener
{
Robot r;
int i=0;
public MyWindow(Frame j)
{
super(j);
try{
r=new Robot();
}catch(Exception e){System.out.println("无法打开Robot"+e);}
addMouseListener(this);
setSize(1024,750);
show();
}
private void getScreen()
{
Graphics g;
BufferedImage bufimg;
g=getGraphics();
int x,y;
x=getToolkit().getScreenSize().width;
y=getToolkit().getScreenSize().height;
setVisible(false);
bufimg=r.createScreenCapture(new Rectangle(0,0,x,y-5));
setVisible(true);
g.clearRect(0,0,x,y-5);
if(g.drawImage(bufimg,0,0,Color.black,this))
System.out.println("成功");
else
System.out.println("失败");
show();
}
public static void main(String[] args) 
{
new MyWindow(new Frame()).getScreen();
int x[]=new int[3];
int y[]=new int[3];
}
public void mouseClicked(MouseEvent e)
    {
if(e.getButton()==MouseEvent.BUTTON1)
{
//左键取数据
}
else
{
getScreen();
}
    }
    public void mouseEntered(MouseEvent e) 
    {
//        System.out.println("鼠标进入"+e.getX()+":"+e.getY());
    }
    public void mouseExited(MouseEvent e) 
    {
//        System.out.println("鼠标离开"+e.getX()+":"+e.getY());
    }
    public void mousePressed(MouseEvent e) 
    {
//        System.out.println("鼠标按下"+e.getX()+":"+e.getY());
    }
    public void mouseReleased(MouseEvent e) 
    {
//        System.out.println("鼠标释放"+e.getX()+":"+e.getY());
    }
}

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    class  MyWindow extends Window implements MouseListener
    {
    Robot r;
    int i=0;
    public MyWindow(Frame j)
    {
    super(j);
    try{
    r=new Robot();
    }catch(Exception e){System.out.println("无法打开Robot"+e);}
    addMouseListener(this);
    setSize(1024,750);
    show();
    }
    private void getScreen()
    {
    Graphics g;
    BufferedImage bufimg;
    g=getGraphics();
    int x,y;
    x=getToolkit().getScreenSize().width;
    y=getToolkit().getScreenSize().height;
    setVisible(false);
    bufimg=r.createScreenCapture(new Rectangle(0,0,x,y-5));
    setVisible(true);
    g.clearRect(0,0,x,y-5);
    if(g.drawImage(bufimg,0,0,Color.black,this))
    System.out.println("成功");
    else
    System.out.println("失败");
    show();
    }
    public static void main(String[] args) 
    {
    new MyWindow(new Frame()).getScreen();
    int x[]=new int[3];
    int y[]=new int[3];
    }
    public void mouseClicked(MouseEvent e)
        {
    if(e.getButton()==MouseEvent.BUTTON1)
    {
    //左键取数据
    }
    else
    {
    getScreen();
    }
        }
        public void mouseEntered(MouseEvent e) 
        {
    //        System.out.println("鼠标进入"+e.getX()+":"+e.getY());
        }
        public void mouseExited(MouseEvent e) 
        {
    //        System.out.println("鼠标离开"+e.getX()+":"+e.getY());
        }
        public void mousePressed(MouseEvent e) 
        {
    //        System.out.println("鼠标按下"+e.getX()+":"+e.getY());
        }
        public void mouseReleased(MouseEvent e) 
        {
    //        System.out.println("鼠标释放"+e.getX()+":"+e.getY());
        }
    }
    可能是源程序中g.clearRect(0,0,x,y-5);的缘故,仅共参考
      

  2.   

    我想会不会是,每次调用了getScreen()之后.
    图形改变,引起了window里的内容改变,重画了呢?
      

  3.   

    简单改造了一下
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;class MyWindow extends Window implements MouseListener {
    BufferedImage bufimg=null; Robot r; int i = 0; public MyWindow(Frame j) {
    super(j);
    try {
    r = new Robot();
    } catch (Exception e) {
    System.out.println("无法打开Robot" + e);
    }
    addMouseListener(this);
    setSize(1024, 750);
    show();
    } private void getScreen() {
    Graphics g;
    g = getGraphics();
    int x, y;
    x = getToolkit().getScreenSize().width;
    y = getToolkit().getScreenSize().height;
    setVisible(false);
    bufimg = r.createScreenCapture(new Rectangle(0, 0, x/2, y/2));
    setVisible(true);
    g.clearRect(0, 0, x, y - 5);
    repaint();
    show();
    } public void paint(Graphics g) {
    g.setColor(new Color(255,0,0));
    g.fillRect(0,0,this.getWidth(),this.getHeight());
    if (bufimg!=null&&g.drawImage(bufimg, 0, 0, Color.black, this))
    System.out.println("成功");
    } public static void main(String[] args) {
    new MyWindow(new Frame());
    int x[] = new int[3];
    int y[] = new int[3];
    } public void mouseClicked(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON1) {
    // 左键取数据
    } else {
    getScreen();
    }
    } public void mouseEntered(MouseEvent e) {
    // System.out.println("鼠标进入"+e.getX()+":"+e.getY());
    } public void mouseExited(MouseEvent e) {
    // System.out.println("鼠标离开"+e.getX()+":"+e.getY());
    } public void mousePressed(MouseEvent e) {
    // System.out.println("鼠标按下"+e.getX()+":"+e.getY());
    } public void mouseReleased(MouseEvent e) {
    // System.out.println("鼠标释放"+e.getX()+":"+e.getY());
    }
    }