为什么我的图像在打印时会延迟?JAVA
在我的程序中,我使用一个基本的图形组件,显示“代码中的bug”,在屏幕上打印女士bug。每次我运行,或者在绘制bug和图像之间设置延迟,bug都会首先打印出来。这是我的密码:为什么我的图像在打印时会延迟?JAVA,java,Java,在我的程序中,我使用一个基本的图形组件,显示“代码中的bug”,在屏幕上打印女士bug。每次我运行,或者在绘制bug和图像之间设置延迟,bug都会首先打印出来。这是我的密码: import static java.lang.System.*; import static java.lang.Math.*; import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.Graphics.*; import
import static java.lang.System.*;
import static java.lang.Math.*;
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.Graphics.*;
import java.awt.event.*;
import java.io.*;
public class ladyBugs
{
public static void main(String[]args)
{
new Windows();
}
}
class Windows extends Frame implements ActionListener, KeyListener, MouseListener
{
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
private double width = screenSize.getWidth();
private double height = screenSize.getHeight();
private int SCWIDTH = (int)width, SCHEIGHT = (int)760;
private int whichScreen;
private int turn;
private Image myPic;
private Image myScreen;
private Graphics pen;
public Windows()
{
out.println(SCWIDTH +" "+ SCHEIGHT);
setSize(SCWIDTH, SCHEIGHT);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
myPic = Toolkit.getDefaultToolkit().getImage("C:\\Users\\s613228\\Pictures\\moby.png");
this.setVisible(true);
this.addKeyListener(this);
this.addMouseListener(this);
gameLoop();
}
public void gameLoop()
{
}
public void paint(Graphics pen)
{
if(whichScreen ==0)
{
setBounds(0, 0, SCWIDTH, SCHEIGHT);
pen.setFont(new Font("verdana", Font.PLAIN, 50));
pen.drawString("Cody's Test Program", SCWIDTH/5+50, SCHEIGHT/6); // Centered
pen.drawImage(myPic, SCWIDTH/8, 150, 351, 144, this);
pause(1000);
whichScreen++;
}
else
doubleBuffer(pen);
}
public void doubleBuffer(Graphics pen)
{
Image code = Toolkit.getDefaultToolkit().getImage("c:\\users\\s613228\\pictures\\screenCapJCreator.png");
pen.setColor(Color.WHITE);
pen.setFont(new Font("verdana", Font.PLAIN, 50));
pen.drawString("Cody's Test Program", SCWIDTH/5+50, SCHEIGHT/6); // Centered
pen.drawImage(code, 0, 0, SCWIDTH, SCHEIGHT, this);
pen.setColor(Color.BLACK);
pen.setFont(new Font("verdana", Font.PLAIN, 60));
pen.drawLine(0, 760, SCWIDTH, 760);
pen.drawString("There are bugs in the code!", SCWIDTH/5, SCHEIGHT/6); // Centered
for(int x = 0; x < 50; x++)
{
int random1 = (int)(random()*SCWIDTH*2-1)+1;
int random2 = (int)(random()*1100-1)+200;
int size = (int)(random()*100)+20;
ladyBugs(random1, random2, size, pen);
pause(15);
}
}
public void ladyBugs(int x, int y, int size, Graphics pen)
{
pen.setColor(Color.BLACK); // Head
pen.fillOval(x/2-size/4, y/2-(size/2+size/4), size/2, size/2);
pen.setColor(Color.WHITE); // Whites of eyes
pen.fillOval(x/2-size/6, y/2-(size/2+size/6), size/8, size/8);
pen.fillOval(x/2+(size/6-size/8), y/2-(size/2+size/6), size/8, size/8);
// Body
pen.setColor(Color.BLACK);
pen.fillOval(x/2-size/2-4, y/2-size/2-4, size+8, size+8);
pen.setColor(Color.RED);
pen.fillOval(x/2-size/2, y/2-size/2, size, size);
pen.setColor(Color.BLACK); // Middle-Line Wing Separation
pen.drawLine(x/2, y/2-size/2, x/2, y/2+size/2);
pen.drawLine(x/2-1, y/2-size/2, x/2-1, y/2+size/2-1);
pen.drawLine(x/2+1, y/2-size/2, x/2+1, y/2+size/2-1);
// Upper-Half Black Dots
pen.fillOval(x/2-size/4, y/2-size/4, size/5, size/5);
pen.fillOval(x/2+(size/4-size/5), y/2-size/4, size/5, size/5);
// Lower-Half Black Dots
pen.fillOval(x/2-size/3, y/2+size/6, size/5, size/5);
pen.fillOval(x/2+(size/3-size/5), y/2+size/6, size/5, size/5);
// Pupils
pen.fillOval(x/2-(size/6-size/32), y/2-(size/2+size/7), size/12, size/16);
pen.fillOval(x/2+(size/12-size/48), y/2-(size/2+size/7), size/12, size/16);
// Antenae
int s = size/2;
pen.drawArc(x/2-(s+(s/16)), y/2-size+(s/4), size/2, size/2, 90, -90);
pen.drawArc(x/2+s/16, y/2-size+(s/4), size/2, size/2, 90, 90);
pen.fillOval(x/2-(s+s/8)/2, y/2-(size-s/4)-s/15, s/10, s/10);
pen.fillOval(x/2+s/2, y/2-(size-s/4)-s/15, s/10, s/10);
}
public void keyPressed(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
public void keyEntered(KeyEvent e)
{
}
public void mouseClicked(MouseEvent m)
{
}
public void mousePressed(MouseEvent m)
{
}
public void mouseReleased(MouseEvent m)
{
}
public void mouseEntered(MouseEvent m)
{
}
public void mouseExited(MouseEvent m)
{
}
public void actionPerformed(ActionEvent b)
{
}
public void update(Graphics G)
{
paint(G);
}
public static void pause(long r)
{
try
{
Thread.sleep(r);
}
catch (Exception e)
{
out.println(" Sleep Error "+e);
}
}
}
导入静态java.lang.System.*;
导入静态java.lang.Math.*;
导入javax.swing.*;
导入java.util.*;
导入java.awt.*;
导入java.awt.Graphics.*;
导入java.awt.event.*;
导入java.io.*;
公共级瓢虫
{
公共静态void main(字符串[]args)
{
新窗口();
}
}
类Windows扩展框架实现ActionListener、KeyListener、MouseStener
{
最终维度screenSize=Toolkit.getDefaultToolkit().getScreenSize();
private double width=screenSize.getWidth();
private double height=screenSize.getHeight();
私有int-SCWIDTH=(int)width,SCHEIGHT=(int)760;
私人屏幕;
私人内翻;
私密图像;
私密图像;
私人图形笔;
公共窗口()
{
out.println(SCWIDTH+“”+SCHEIGHT);
设置大小(SCWIDTH,SCHEIGHT);
addWindowListener(新的WindowAdapter()
{
公共无效窗口关闭(WindowEvent e)
{
系统出口(0);
}
});
myPic=Toolkit.getDefaultToolkit().getImage(“C:\\Users\\s613228\\Pictures\\moby.png”);
此.setVisible(true);
this.addKeyListener(this);
这个。addMouseListener(这个);
gameLoop();
}
public void gameLoop()
{
}
公共空白绘画(图形笔)
{
如果(whichScreen==0)
{
立根(0,0,SCWIDTH,SCHEIGHT);
setFont(新字体(“verdana”,Font.PLAIN,50));
钢笔。拉丝(“科迪的测试程序”,SCWIDTH/5+50,SCHEIGHT/6);//居中
画笔图像(myPic,SCWIDTH/8150351144,this);
暂停(1000);
whichScreen++;
}
其他的
双缓冲器(pen);
}
公用双缓冲区(图形笔)
{
Image code=Toolkit.getDefaultToolkit().getImage(“c:\\users\\s613228\\pictures\\screenCapJCreator.png”);
钢笔颜色(颜色:白色);
setFont(新字体(“verdana”,Font.PLAIN,50));
钢笔。拉丝(“科迪的测试程序”,SCWIDTH/5+50,SCHEIGHT/6);//居中
drawImage(代码,0,0,SCWIDTH,SCHEIGHT,this);
钢笔颜色(颜色:黑色);
setFont(新字体(“verdana”,Font.PLAIN,60));
钢笔。抽绳(0760,SC760);
drawString(“代码中有错误!”,SCWIDTH/5,SCHEIGHT/6);//居中
对于(int x=0;x<50;x++)
{
int random1=(int)(random()*SCWIDTH*2-1)+1;
int random2=(int)(random()*1100-1)+200;
int size=(int)(random()*100)+20;
瓢虫(随机1,随机2,大小,笔);
暂停(15);
}
}
公共空间瓢虫(整数x,整数y,整数大小,图形笔)
{
pen.setColor(Color.BLACK);//头
圆珠笔(x/2-size/4,y/2-(size/2+size/4),size/2,size/2);
pen.setColor(Color.WHITE);//眼睛的白色
圆珠笔(x/2-size/6,y/2-(size/2+size/6),size/8,size/8);
圆珠笔(x/2+(尺寸/6-尺寸/8),y/2-(尺寸/2+尺寸/6),尺寸/8,尺寸/8);
//身体
钢笔颜色(颜色:黑色);
圆珠笔(x/2-size/2-4,y/2-size/2-4,尺寸+8,尺寸+8);
钢笔颜色(颜色:红色);
圆珠笔(x/2-size/2,y/2-size/2,size,size);
pen.setColor(Color.BLACK);//中间线机翼分离
钢笔抽绳(x/2,y/2-尺寸/2,x/2,y/2+尺寸/2);
钢笔抽绳(x/2-1,y/2-size/2,x/2-1,y/2+size/2-1);
钢笔抽绳(x/2+1,y/2-size/2,x/2+1,y/2+size/2-1);
//上半部黑点
圆珠笔(x/2-size/4,y/2-size/4,size/5,size/5);
圆珠笔(x/2+(尺寸/4-size/5),y/2-size/4,size/5,size/5);
//下半黑点
圆珠笔(x/2-size/3,y/2+size/6,size/5,size/5);
圆珠笔(x/2+(尺寸/3-尺寸/5),y/2+尺寸/6,尺寸/5,尺寸/5);
//学生
圆珠笔(x/2-(尺寸/6-尺寸/32)、y/2-(尺寸/2+尺寸/7)、尺寸/12、尺寸/16);
圆珠笔(x/2+(尺寸/12尺寸/48),y/2-(尺寸/2+尺寸/7),尺寸/12,尺寸/16);
//触角
int s=大小/2;
笔画(x/2-(s+(s/16)),y/2-尺寸+(s/4),尺寸/2,尺寸/2,90,-90);
笔画弧(x/2+s/16,y/2-size+(s/4),size/2,size/2,90,90);
圆珠笔(x/2-(s+s/8)/2,y/2-(尺寸-s/4)-s/15,s/10,s/10);
圆珠笔(x/2+s/2,y/2-(尺寸-s/4)-s/15,s/10,s/10);
}
按下公共无效键(按键事件e)
{
}
公共无效密钥已释放(密钥事件e)
{
}
public void keyTyped(KeyEvent e)
{
}
已输入公共无效密钥(密钥事件e)
{
}
公共无效mouseClicked(MouseEvent m)
{
}
公共空间鼠标按下(MouseEvent m)
{
}
公共无效MouseEvent(MouseEvent m)
{
}
公共无效鼠标事件(鼠标事件m)
{
}
公共无效mouseExited(MouseEvent m)
{
}
已执行的公共无效操作(操作事件b)
{
}
公共空间更新(图G)
{
油漆(G);
}
公共静态无效暂停(长r)
{
尝试
{
睡眠(r);
}
捕获(例外e)
{
out.println(“睡眠错误”+e);
}
}
}
我特别想要的是如何在bug出现之前打印背景图像(这段代码的一个屏幕盖)。以下是具体章节:
public void paint(Graphics pen)
{
if(whichScreen ==0)
{
setBounds(0, 0, SCWIDTH, SCHEIGHT);
pen.setFont(new Font("verdana", Font.PLAIN, 50));
pen.drawString("Cody's Test Program", SCWIDTH/5+50, SCHEIGHT/6); // Centered
pen.drawImage(myPic, SCWIDTH/8, 150, 351, 144, this);
pause(1000);
whichScreen++;
}
else
doubleBuffer(pen);
}
public void doubleBuffer(Graphics pen)
{
Image code = Toolkit.getDefaultToolkit().getImage("c:\\users\\s613228\\pictures\\screenCapJCreator.png");
pen.setColor(Color.WHITE);
pen.setFont(new Font("verdana", Font.PLAIN, 50));
pen.drawString("Cody's Test Program", SCWIDTH/5+50, SCHEIGHT/6); // Centered
pen.drawImage(code, 0, 0, SCWIDTH, SCHEIGHT, this);
pen.setColor(Color.BLACK);
pen.setFont(new Font("verdana", Font.PLAIN, 60));
pen.drawLine(0, 760, SCWIDTH, 760);
pen.drawString("There are bugs in the code!", SCWIDTH/5, SCHEIGHT/6); // Centered
for(int x = 0; x < 50; x++)
{
int random1 = (int)(random()*SCWIDTH*2-1)+1;
int random2 = (int)(random()*1100-1)+200;
int size = (int)(random()*100)+20;
ladyBugs(random1, random2, size, pen);
pause(15);
}
}
public void ladyBugs(int x, int y, int size, Graphics pen)
{
pen.setColor(Color.BLACK); // Head
pen.fillOval(x/2-size/4, y/2-(size/2+size/4), size/2, size/2);
pen.setColor(Color.WHITE); // Whites of eyes
pen.fillOval(x/2-size/6, y/2-(size/2+size/6), size/8, size/8);
pen.fillOval(x/2+(size/6-size/8), y/2-(size/2+size/6), size/8, size/8);
// Body
pen.setColor(Color.BLACK);
pen.fillOval(x/2-size/2-4, y/2-size/2-4, size+8, size+8);
pen.setColor(Color.RED);
pen.fillOval(x/2-size/2, y/2-size/2, size, size);
pen.setColor(Color.BLACK); // Middle-Line Wing Separation
pen.drawLine(x/2, y/2-size/2, x/2, y/2+size/2);
pen.drawLine(x/2-1, y/2-size/2, x/2-1, y/2+size/2-1);
pen.drawLine(x/2+1, y/2-size/2, x/2+1, y/2+size/2-1);
// Upper-Half Black Dots
pen.fillOval(x/2-size/4, y/2-size/4, size/5, size/5);
pen.fillOval(x/2+(size/4-size/5), y/2-size/4, size/5, size/5);
// Lower-Half Black Dots
pen.fillOval(x/2-size/3, y/2+size/6, size/5, size/5);
pen.fillOval(x/2+(size/3-size/5), y/2+size/6, size/5, size/5);
// Pupils
pen.fillOval(x/2-(size/6-size/32), y/2-(size/2+size/7), size/12, size/16);
pen.fillOval(x/2+(size/12-size/48), y/2-(size/2+size/7), size/12, size/16);
// Antenae
int s = size/2;
pen.drawArc(x/2-(s+(s/16)), y/2-size+(s/4), size/2, size/2, 90, -90);
pen.drawArc(x/2+s/16, y/2-size+(s/4), size/2, size/2, 90, 90);
pen.fillOval(x/2-(s+s/8)/2, y/2-(size-s/4)-s/15, s/10, s/10);
pen.fillOval(x/2+s/2, y/2-(size-s/4)-s/15, s/10, s/10);
}
公共空白绘制(图形笔)
{
如果(whichScreen==0)
{
立根(0,0,SCWIDTH,SCHEIGHT);
setFont(新字体(“verdana”,Font.PLAIN,50));
钢笔。拉丝(“科迪的测试程序”,SCWIDTH/5+50,SCHEIGHT/6);//居中
画笔图像(myPic,SCWIDTH/8150351144,this);
暂停(1000);
whichScreen++;
}
其他的
双缓冲器(pen);
}
公用双缓冲区(图形笔)
{
Image code=Toolkit.getDefaultToolkit().getImage(“c:\\users\\s613228\\pictures\\screenCapJCreator.png”);
钢笔颜色(颜色:白色);
pen.setFont(新字体(“verdana”,Font.PLAIN,