我目前正在使用java applets和java.awt.Graphics来执行一个简单的例子。我一直在看一个应该显示乌龟的示例,从那里我可以进行各种修改并探索图形如何工作。
我的问题是,当我运行程序时,它会显示一个空白小程序。起初我认为TortoiseRacerClient初始化和绘制方法没有做任何事情,但是在使用基本打印语句测试它们时,我发现它们都是功能性的。
我认为问题在于我的一个或几个变量,但我不确定在哪里看。
结构的
Animal抽象超类由TortoiseRacer类继承
Movable接口由TortoiseRacer类实现
TortoiseRacerClient类创建一个TortoiseRacer实例并设置applet
的码
- 动物类
import java.awt.Graphics;
public abstract class Animal {
private int x; // x position
private int y; // y position
private String ID; // animal ID
public Animal( ) { ID = ""; }
public Animal( String rID, int rX, int rY )
{ ID = rID; x = rX; y = rY; }
public String getID( ) { return ID; }
public int getX( ) { return x; }
public int getY( ) { return y; }
public void setX( int newX ) { x = newX; }
public void setY( int newY ) { y = newY; }
public abstract void draw( Graphics g );
}
- 可移动班级
public interface Moveable {
int FAST = 5; // static constant
int SLOW = 1; // static constant
void move( ); // abstract method
}
-TortoiseRacer Class
import java.awt.Color;
import java.awt.Graphics;
public class TortoiseRacer extends Animal implements Moveable {
public TortoiseRacer( ) { super( ); }
public TortoiseRacer( String rID, int rX, int rY ) {
super( rID, rX, rY );
}
public void draw( Graphics g ) {
int startX = getX( );
int startY = getY( );
g.setColor( new Color( 34, 139, 34 ) ); // dark green
//body
g.fillOval( startX, startY, 25, 15 );
//head
g.fillOval( startX + 20, startY + 5, 15, 10 );
//flatten bottom
g.clearRect( startX, startY + 11, 35, 4 );
//feet
g.setColor( new Color( 34, 139, 34 ) ); // brown
g.fillOval( startX + 3, startY + 10, 5, 5 );
g.fillOval( startX + 17, startY + 10, 5, 5 );
}
public void move( ) { setX( getX( ) + SLOW ); }
}
-TortoiseRacerClient Class
import java.awt.Graphics;
import javax.swing.JApplet;
public class TortoiseRacerClient extends JApplet {
private TortoiseRacer t;
public void init( ) {
t = new TortoiseRacer( "Tortoise", 50, 50 );
System.out.print(t.getID());
}
public void paint( Graphics g ) {
for ( int i = 0; i < getWidth( ); i++ )
{
t.move( );
t.draw( g );
//Pause.wait( .03 );
g.clearRect( 0, 0, getWidth( ), getHeight( ) );
System.out.print("I'm running");
}
}
}
问题
我的java applet是空白的,有人可以解释一下原因吗?
也许让我指出正在做的事情(画一只乌龟)?
的备注的
使用Eclipse(火星4.5.2)
java.awt.Graphics和JApplet的新用户
至于我为什么要这样做,这是一个介绍性的任务。我们最终将转向JavaFx。