2016-11-29 3 views
0
public class SocialNetwork extends Program 
       implements Constants { 

    Canvas canvas = new Canvas(); 

    public void init() { 

    breakoutButton = new JButton("Play Breakout Game"); 
    breakoutButton.setForeground(Color.WHITE); 
    breakoutButton.setBackground(Color.BLACK); 
    add(breakoutButton, WEST); 
    breakoutButton.addActionListener(this); 

    getContentPane().setBackground(Color.BLACK); 

    addActionListeners(); 

    add(canvas); 
    } 
} 

public void actionPerformed(ActionEvent e) { 

if (e.getActionCommand().equals("Play Breakout Game") || e.getSource() == breakoutButton) { 

    canvas.displayMessage("game started"); //displayMessage method displays the parameter string on the canvas. 
    Breakout bo = new Breakout(); 
    bo.setVisible(true); 
} 

を持つ別のクラスは}のJava実行するJButton

これはブレイクアウトゲームを起動することになっているボタンを作成し、メインのコードです。ブレイクアウトのためのコードは次のとおりです。

public class Breakout extends GraphicsProgram { 

    public void run() { 

     setBackground(Color.BLACK); 

     setUpBricks(); 

     points = new GLabel("Points: " + pointsCounter); 
     add(points, getWidth()/2 - points.getWidth()/2, getHeight() - points.getAscent()); 
     points.setColor(Color.WHITE); 

     for(int i=0; i < NTURNS; i++) { 
     addMouseListeners(); 
     setUpGame(); 
     playGame(); 
     if (brickCounter == 0) { 
      GLabel winner = new GLabel("You Win! You got " + pointsCounter + " points."); 
      winner.setFont("Times New Roman-25"); 
      winner.setColor(Color.WHITE); 
      add(winner, getWidth()/2 - winner.getWidth()/2, getHeight()/2 - winner.getAscent()/2); 
      break; 
     } 
     } 
     if (ball.getY() > getHeight()) { 
     GLabel message = new GLabel("Game Over! You got " + pointsCounter + " points."); 
     message.setFont("Times New Roman-25"); 
     message.setColor(Color.WHITE); 
     add(message, getWidth()/2 - message.getWidth()/2, getHeight()/2 - message.getAscent()/2); 
     } 
    } 

問題は、私はボタンをクリックしたときに、それは、クリックを登録したJFrameを開くが、プログラムを実行していないということです。空のJFrameだけです。私は間違って何をしていますか? 注:私は、ブレークアウトゲームの部分の基本コードのみを掲載しています。

+0

あなたは 'JFrame'(例えば、'ブレークアウトを実行する予定でください:

別のオプションは、このようなものは、ウィンドウが開いたときに、それはあなたのコードを実行されるようにBreakoutクラスにリスナーを追加することです')や' GraphicsProgram'( '' BreakoutGame'など)?もっと早く助けを求めるには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

+0

ところで、私は['GraphicsProgram'](https://cs.stanford.edu/people/eroberts/jtf/javadoc/student/acm/program/GraphicsProgram.html)と[' Program'](https: //cs.stanford.edu/people/eroberts/jtf/javadoc/student/acm/program/Program.html)は 'JApplet'のインスタンスであり、ACM Java APIが役に立たないことを意味します。 [Java Plugin support deprecated](http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/)と[Plugin-Free Webへの移行](https: //blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free)。 –

答えて

0

あなたのコードはBreakoutオブジェクトを作成し、その可視性に設定します。

Breakout bo = new Breakout(); 
bo.setVisible(true); 

しかし、あなたが他のメソッドを呼び出すことはありませんが。たとえば、runメソッドまたはmainメソッドを呼び出すことができます。コードを実行するには、これらのメソッドを何とか呼び出さなければなりません。

addWindowListener(new java.awt.event.WindowAdapter() { 
     public void windowOpened(java.awt.event.WindowEvent evt) { 
      //call a method that runs the program here! 
     } 
    }); 
+0

bo.run()を実行してrunメソッドを呼び出そうとしました。同じことが起こっている。 – user7091463

+0

あなたはクラス内にクラスを持っていますので、あなたのポストのコードからどのように実行すべきか分かりません。 –

+0

私は、GraphicsProgramだけを拡張するようにクラスを変更しました。今はどう? – user7091463

関連する問題