Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的图像在打印时会延迟?JAVA_Java - Fatal编程技术网

为什么我的图像在打印时会延迟?JAVA

为什么我的图像在打印时会延迟?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

在我的程序中,我使用一个基本的图形组件,显示“代码中的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 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,