站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题为什么这个程序在单击右键后,图形一闪就没有了呢?

为什么这个程序在单击右键后,图形一闪就没有了呢?

摘要: 为什么这个程序在单击右键后,图形一闪就没有了呢?


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());
}
}


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);的缘故,仅共参考




把那行注释掉,还是一样!!!
我写那行是为了,不让以前的图形再留在上面!
以免干扰!


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


放到paint函数里面去做


简单改造了一下
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());
}
}



谢谢!!!!


↑返回目录
前一篇: 怎样用java在网络上传送一个自定义包?(立结)
后一篇: BufferedInputStream的问题