为什么我的Java Applet显示空白屏幕?

时间:2016-06-07 06:29:45

标签: java swing graphics applet

我目前正在使用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。

0 个答案:

没有答案