2016-03-01 82 views
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 void paint (Graphics g) { 
     test(); 
     g.drawOval (60, 20, i, i); 
    } 

} 

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

我的程序文本的方法做大量计算,因此调用测试方法只是重新分配的价值,又是不是一个好的选择。如何只调用一次Demo类?

+0

使用一个变量,以确定它是否还没有或不能运行...... – SomeJavaGuy

+0

雅使用一个单独的标志变量,我可以这样做,但创建一个新的变量,分配和比较,我不觉得是个不错的选择。这应该有更好的方法。 –

+1

然后把'test'方法放在构造函数里面,如果它只是进行初始化 – SomeJavaGuy

回答

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); 
    } 

} 
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); 
    } 

} 

如果你不想演示有一个构造函数,然后创建一个名为方法,并调用它初始化后。

public void setFlag() { 
    hasRun = false; 
} 
2

你可以使用Applet类的init()方法,它是专门为此提供的。

+0

同意。保证只调用一次而不是构造函数的'init()'方法是添加方法调用的正确位置。 –

相关问题