我在Java中使用Applet时如何调用特定类

时间:2016-03-01 06:54:44

标签: java applet awt

package Program1;

import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Scanner;

public class Demo extends Applet{
    static int i=0;

    public static void test(){
        i=50;
        System.out.println("This is my static method");
    }


    public void paint (Graphics g)  {
        test();
        g.drawOval (60, 20, i, i);
    }

}

我有两种方法绘画和测试。我想只执行一次测试方法,它将初始化i的值,并且我将在paint方法中使用。但问题是,当我执行程序时,它正在调用文本方法一次,当我重新调整Applet窗口的大小时,它会一次又一次地调用该测试方法。

对于我的程序,文本方法做了很多计算,所以调用测试方法只是为了一次又一次地赋值,不是一个好的选择。如何只调用一次Demo类?

3 个答案:

答案 0 :(得分:2)

您可以使用专门为此目的提供的Applet类init()方法。

答案 1 :(得分:1)

package Program1;

import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Scanner;

public class Demo extends Applet{
    static int i=0;
    boolean hasRun = false;

    public Demo (){
       this.test();
       this.hasRun = true;
    }

    public static void test(){
        if (hasRun==false){
           i=50;
           System.out.println("This is my static method");
        }
    }


    public void paint (Graphics g)  {
        test();
        g.drawOval (60, 20, i, i);
    }

}

如果你不希望Demo有一个构造函数,那么创建一个调用的方法,并在初始化后调用它。

public void setFlag() {
   hasRun = false;
}

答案 2 :(得分:0)

使用构造函数类我可以调用此测试方法一次。

package Program1;

import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Scanner;

public class Demo extends Applet{
    static int i=0;

    public static void test(){
        i=50;
        System.out.println("This is my static method");
    }

    public Demo(){
        test();
    }


    public void paint (Graphics g)  {

        g.drawOval (60, 20, i, i);
    }

}