2016-06-16 8 views
0

JButtonをリセットして他の値を与えるにはどうしたらいいですか?私が今クリックすると1から6のランダムな値が得られます。しかし、もう一度クリックすると別のランダムな値は得られません。何故ですか?これをどうすれば解決できますか?JButtonをリセットするにはどうしたらいいですか?

package Opdrachten; 

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Random; 

import javax.swing.*; 

public class spel extends JPanel { 
private JButton knop; 
private boolean geklikt; 
Random rand = new Random(); 
int waarde = rand.nextInt(6) + 1; //De plus een is zodat je geen 0 krijgt 
int optel = 0; 

public spel() { 
    setBackground(Color.WHITE); 
    knop = new JButton ("Gooi!"); 
    knop.addActionListener(new KnopHandler()); 
    add(knop); 
} 

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 

    if(geklikt) { 
     g.drawString("Je hebt " + waarde + " gegooid. Dit is totaal:" + optel, 100, 70); 
     optel = optel + waarde; 

     if (waarde == 1) { 
      g.drawString("Je mag 1 vakje naar voren", 100, 90); 
     } 
     if (waarde == 2) { 
      g.drawString("Je mag 2 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 3) { 
      g.drawString("Je mag 3 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 4) { 
      g.drawString("Je mag 4 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 5) { 
      g.drawString("Je mag 5 vakjes naar voren", 100, 90); 
     } 
     if (waarde == 6) { 
      g.drawString("Je mag 6 vakjes naar voren", 100, 90); 
     } 
    } 


} 

class KnopHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     geklikt = true; 
     repaint(); 

    } 
} 

} 
+1

'int型waarde'は一度だけ評価されます。 'ActionListener'の内部でそれを再計算したいかもしれません。 – Berger

答えて

2

あなたは非常に

int waarde = rand.nextInt(6) + 1; //De plus een is zodat je geen 0 krijgt 

を開始しかし、あなたが今までそれを変更しないで乱数を設定します。 (あなたのクラスをインスタンス化するとき)

class KnopHandler implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     geklikt = true; 
     waarde = rand.nextInt(6) + 1; //get another random number 
     repaint(); 
    } 
} 
+0

2人のプレーヤーを使ってどのように切り替えることができますか?例:プレーヤー1はクリックして6を獲得し、プレーヤー2はクリックして獲得することができます。プレーヤー1はクリックして1を獲得し、それは一緒にカウントアップします。それ、どうやったら出来るの? – Lucafraser

+0

いつでも各プレイヤーの番号を別々に保存して、それが誰であるかに基づいて追加することができます。 – Arc676

+0

ターンにブール値を使用しますか? – Lucafraser

0
class KnopHandler implements ActionListener { 
public void actionPerformed(ActionEvent e) { 
    geklikt = true; 
    waarde = rand.nextInt(6) + 1; //get another random number 
    //button.setText(); //name of button 
    repaint(); 
} 
} 
関連する問題