2011-07-20 11 views
0

私はこれを理解しようとしましたが、約3日ほど前に別の方法を見つけようとしましたが、動作させることはできません... 基本Game Appletをアプ​​リケーションに変換していますが、ゲームループを働かせてください。 NetBeansで、私はWindowを作ったが、Set I Visibleを表示しても表示されない。シンプルゲームのループを作る方法についてのチュートリアルがあれば、それは素晴らしいことです。私は絶望的です、助けてください!したがって、私はあなたがそれをしたいと仮定しこのシンプルなJavaゲームループで何が間違っていますか?

package thejavapowdertoy; 

    import java.awt.Color; 
    import java.awt.Graphics2D; 
    import java.awt.Toolkit; 
    import java.awt.event.KeyEvent; 
    import java.awt.event.KeyListener; 
    import java.awt.image.BufferedImage; 
    import javax.swing.JPanel; 


    public class Painter extends JPanel implements KeyListener{ 



    BufferedImage buffer; 

    public Painter() 
    { 
     setIgnoreRepaint(true); 
     addKeyListener(this); 
     setFocusable(true); 
    } 

    public void InitializePainting() 
    { 

    } 

    public void Paint() 
    { 
     Graphics2D b = buffer.createGraphics(); 
     Graphics2D g = (Graphics2D)this.getGraphics(); 
     b.setColor(Color.red); 
     b.fillRect(50, 50, 50, 50); 
     b.dispose(); 
     g.drawImage(buffer, 0, 0, this); 
     Toolkit.getDefaultToolkit().sync(); 
     g.dispose(); 
    } 

    public void keyTyped(KeyEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 


    public void keyPressed(KeyEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 


    public void keyReleased(KeyEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 

} 

おかげ

+1

「動作しません」と定義できますか?あなたはそれを期待していなかったことは何ですか?それは何をすべきか? –

+0

私は、[Java言語の学習](http://download.oracle.com/javase/tutorial/java/index.html)の基本に戻ってください。 – Moonbeam

答えて

1

あなたMainClass実装Runnable

はここに私のメインクラスのコード

package MainClass; 

import javax.swing.*; 

public class MainClass implements Runnable{ 

    Painter panel = new Painter(); 
    JavaPowderToy Screen = new JavaPowderToy(); 
    Thread t = new Thread(); 

    public void run() 
    { 

    Initialize(); 

    while(true) 
    { 
     try 
     { 
      panel.Paint(); 
      Thread.sleep(15); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    } 

void MainClass() 
{ 
    t.start(); 

} 

public static void main(String[] args) { 
    MainClass Java = new MainClass(); 



} 

private void Initialize() 
{ 
    panel.InitializePainting(); 
    new Window().setVisible(true); 
} 

}

は、ここに私の画家クラスのですスレッドによって実行されます。しかし、スレッドtはそのことを知らない。

あなたがスレッドのコンストラクタにMainClassインスタンスを渡す必要があります。

new Thread(this);はまた、あなたのPainterパネルは、作成ウィンドウに接続されていないので、それが見えません。 JFrameまたはJWindowを作成し、ペインタを配置してみてください。

+0

ありがとう、これは私が必要だったものでした(そして、私はチュートリアルをしていましたが、これは "これ"、奇妙なことを書いていませんでした) –

0
void MainClass() 
{ 
    t.start(); 

} 

これはコンストラクタではなく、メソッドです。これは、スレッドが開始されていないためです。 void

また、他の回答も見てください。基本的に2つのスレッドがあります。 1つはMainClassで、次にtMainClassの中にあります。

+0

それは変わらず、それでも表示されませんでした。 –

関連する問題