我正在用java寫一個遊戲(一個applet),並且我有兩個線程正在運行。一個線程正在主類中運行,另一個線程是一個單獨的類,它繪製一個公共變量類中的圖形變量,供所有其他類讀取。 (主類讀取圖形變量並且可以繪製它(作爲圖像))如何從applet中的其他方法調用repaint?
我想能夠從另一個類中調用主applet的repaint()方法,但我沒有想法該怎麼做,因爲調用「Main_applet_class」.repaint()方法會導致「無法調用此靜態上下文的方法」錯誤。幫幫我!
我正在用java寫一個遊戲(一個applet),並且我有兩個線程正在運行。一個線程正在主類中運行,另一個線程是一個單獨的類,它繪製一個公共變量類中的圖形變量,供所有其他類讀取。 (主類讀取圖形變量並且可以繪製它(作爲圖像))如何從applet中的其他方法調用repaint?
我想能夠從另一個類中調用主applet的repaint()方法,但我沒有想法該怎麼做,因爲調用「Main_applet_class」.repaint()方法會導致「無法調用此靜態上下文的方法」錯誤。幫幫我!
您需要對要調用方法的對象的引用。一種方法是通過調用類中的構造函數參數將主要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
}
}
也許我應該已經包括此代碼: '公共類InternetHearts擴展的Applet實現Runnable,MouseListener的,的MouseMotionListener,KeyListener的 {// 東西... ... 主題SPThread; SPGame單人遊戲=新SPGame(); //更多內容... public void start() SPThread = new Thread(singleplayer); SPThread.start(); } // 更多的東西 } 公共類SPGame實現Runnable {// 的東西,並構造 公共無效的run(){ // 我想打電話重繪這裏 } }' – Evan 2011-04-21 15:14:37
烏姆是的,我希望我可以正確格式化,但我不能在評論 – Evan 2011-04-21 15:15:19
@Evan:將它添加爲您的原始文章的編輯,然後發表評論指向我與@ hovercraft在開始時,所以我會知道尋找你的改變。 – 2011-04-21 15:59:31
所以你會接受還是什麼? – 2011-05-02 14:15:57