2016-10-04 9 views
0

私はガールフレンドのためにこのゲームに取り組んでいます。私は数日間同じ問題に立ち往生しました。基本的には、彼女が5回目に「木材を集める」ボタンを5回押すことができるようにしたい、彼女が5回目にそれを押した直後に、「火災の作成」ボタンがポップアップするはずです。ボタンを希望のときに表示させるにはどうすればよいですか?

1.問題は、5番目のボタンを押しても表示されない方法をプログラムしようとしても表示されないことです。

  1. コーディングのヒントや、私の現在のコードをクリーンアップするために何かできると思います。

    private static JPanel panel; 
    private static int woodCounter; 
    private static int leafCounter; 
    private static JFrame frame; 
    
  2. これは、これは基本的に

    public static void createFire() { 
    JButton fire = new JButton("Create Fire"); 
    
    fire.addActionListener(new ActionListener() { 
    
        @Override 
        public void actionPerformed(ActionEvent event) { 
         System.out.println("Creating a fire."); 
    
         woodCounter = woodCounter - 10; 
        } 
    }); 
    
    fire.setVisible(true); 
    panel.add(fire, new FlowLayout(FlowLayout.CENTER)); 
    } 
    
+0

あなたの 'パネル 'は、両方のボタンを表示するのに十分な大きさですか? – VGR

+0

誰が 'gatherWood()'と 'createFire()'を呼び出していますか? –

+0

返事が遅れて申し訳ありません。私はgatherWood()とcreateFire()と言うだけで、mainメソッドで呼びます。パネルがサイズを持っているかどうか分からなかったので、サイズが分かりません。 –

答えて

2

発射ボタンを作成し、私は彼女を押すことができるようにしたいされ

public static int gatherWood() { 
woodCounter = 0; 

JButton wood = new JButton("Gather Wood"); 

wood.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent event) { 
     System.out.println("Gathering Wood"); 
     woodCounter++; 
     woodCounter++; 
     System.out.println(woodCounter); 
    } 
}); 

wood.setVisible(true); 
panel.add(wood, new FlowLayout(FlowLayout.CENTER)); 

return woodCounter; 
} 
  • 集まる木のボタンであります彼女がそれを押した直後に「木を集める」ボタンを5回押すと、 "Create Fire"ボタンが現れます。

  • 何かを行うようにコードに指示する「ロジックなら」というロジックは表示されません。

    私は次の問題は、あなたが目に見えるのSwing GUIにコンポーネントを追加する際の基本的なコードがあるべきであるということである疑い(および「createFire() `メソッドが呼び出されることを確認してください)ことを修正したら:

    panel.add(...); 
    panel.revalidate(); 
    panel.repaint(); 
    

    あなたは(0、0)とペイントすることは何もありませんそれ以外の追加コンポーネントがの大きさを持っているレイアウトマネージャを起動するrevalidate()を必要としています。

    panel.add(fire, new FlowLayout(FlowLayout.CENTER)); 
    

    レイアウトマネージャを変更しようとして保管しないでください。それを2番目のパラメータが使用されているものではありません。パネルのyoutマネージャは、パネルが作成されたときに一度だけ設定する必要があります。

    +0

    私はそれを前に試していましたが、if/else文を実行したあと、パネル上で呼び出された一連のメソッドがありませんでした。私はちょうどそれを私のコードに入れて、今はうまくいきます。ありがとうございました。 –