我正在用java编写游戏(applet),我有两个线程在运行。一个线程在主类中运行,另一个是绘制到一个公共变量类中的图形变量的单独类,以供所有其他要读取的类使用。 (主类读取图形变量并可以绘制它(作为图像)。)
我希望能够从另一个类调用主applet的repaint()方法,但我不知道如何这样做,因为调用“Main_applet_class”.repaint()方法会导致“你无法调用这个方法来自静态上下文“错误。救命啊!
答案 0 :(得分:2)
您需要引用要调用方法的对象。一种方法是通过调用类中的构造函数参数将主applet对象传递给调用类。请注意,这与GUI编程无关,而与基本Java无关。
例如:
import javax.swing.JApplet;
public class FooApplet extends JApplet {
public void init() {
try {
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
}
}
private void createGUI() {
OtherClass otherClass = new OtherClass(this);
}
}
class OtherClass {
private FooApplet fooApplet;
public OtherClass(FooApplet fooApplet) {
this.fooApplet = fooApplet; // now I can call methods on the FooApplet object
}
public void myMethod() {
// ... some code here...
fooApplet.repaint(); // now that I have a valid ref I can call repaint
}
}