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类?
答案 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);
}
}