这适用于任何人吗?

时间:2013-12-15 18:29:33

标签: java graphics runtime japplet

这是主要的课程

import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.net.*;
import java.awt.event.*;


public class demo_image extends JApplet {

private Image offscreen;
private double wildcat_x;
private int wildcat_y;
public void init() {

    player();
    wildcat_x = 50;
    wildcat_y = 50;
}

public void paint(Graphics g) {
    Graphics gg =(Graphics2D)offscreen.getGraphics();
    Delay x = new Delay();
    gg.clearRect(0,0,getSize().width, getSize().height);
    gg.drawImage(offscreen,0,0,null);
    gg.drawString("Welcome to Java!!", 50, 60 );

    gg.drawImage(getImage(getDocumentBase(),"tyro.png"),(int)wildcat_x,wildcat_y, 250,300,this);
    wildcat_x+=2; 
    repaint();


    x.wait(30);

    gg.dispose();

}

public void player(){
    try{
        AudioClip b = getAudioClip( new URL(getCodeBase()+"track02.wav"));
        b.play();
    }
    catch(Exception e){
        System.out.println(e);
    }
}
}

这是二级课程

public class Delay
{
  public void wait(int milliseconds)
{
    try
    {
        Thread.sleep(milliseconds);
    } 
    catch (Exception e)
    {
        // ignoring exception at the moment
    }
}
}

1 个答案:

答案 0 :(得分:2)

  1. 不要覆盖paint()方法。通过覆盖JPanel(或JComponent)的paintComponent()方法完成自定义绘制,然后将面板添加到applet

  2. 不要从任何绘画方法调用repaint()。这将导致无限循环。

  3. 不要在绘画方法中使用睡眠代码。如果您想要动画,请使用Swing Timer

  4. 不要从绘画方法中读取图像。创建类时应该读取一次图像。

  5. 类名以大写字母开头。 “demo_image”应为“DemoImage”。