# Variable neue Random Zahl zuweisen, wenn Button geklickt



## ehlr (6. Jan 2012)

Hallo.

Wenn ich den Button klicke, wird zwar das Label von 0 zu 1, aber wenn ich erneut klicke, dann "würfelt" er nicht, sondern 1 bleibt stehen.

Bisheriger Code :


```
button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
	            panel.repaint();
	            int zahl = quadrat.zufall();
	            DecimalFormat f = new DecimalFormat();
	            String ausgabe = f.format(zahl);
	            label.setText(ausgabe);
	        }
	    });
```


Hinweis : quadrat.zufall() gibt eine Zufallszahl von 1 bis 6 zurück.


----------



## hdi (6. Jan 2012)

```
int zahl = quadrat.zufall();
```

Zeig mal die Methode.



> Hinweis : quadrat.zufall() gibt eine Zufallszahl von 1 bis 6 zurück.


Wahrscheinlich nicht


----------



## ehlr (6. Jan 2012)

```
public int zufall() {
	  int zahl;
	  zahl = (int) Math.random() * 6 + 1;
	  return zahl;
  }
```


----------



## hdi (6. Jan 2012)

```
zahl = (int) Math.random() * 6 + 1;
```

Liefert immer 1. Falsche Klammerung, du castest Math.random() nach int, bevor du irgendwas multiplizierst oder addierst. Math.random liefert aber immer eine Zahl < 1. Also:

0 * 6 + 1 = 1

Richtig:


```
(int)(Math.random() * 6) + 1
```


----------



## hdi (6. Jan 2012)

By the way:


```
int zahl = quadrat.zufall();
DecimalFormat f = new DecimalFormat();
String ausgabe = f.format(zahl);
label.setText(ausgabe);
```

Geht auch einfacher:


```
int zahl = quadrat.zufall();
label.setText(String.valueOf(zahl)); // oder setText( zahl + "" );
```


----------



## ehlr (6. Jan 2012)

Weißt du auch wie ich das Label in ein Quadrat anzeigen kann?
Hier mein ganzer Code :

Würfel.java 


```
@SuppressWarnings("serial")
public class Würfel extends JFrame {

	private JButton button;
	private JPanel panel;
	private JLabel label;
	private Quadrat quadrat = new Quadrat();
	
	public Würfel() {
		super("Cube");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
        pack();
        setLocationRelativeTo(null);
        setResizable(false);
        setSize(100,170);
        quadrat.setPreferredSize(new Dimension(100, 100));
        setVisible(true);
	}
	
	private void init() {
		panel = new JPanel();
		button = new JButton("Würfeln");
		label = new JLabel("0");
		panel.add(quadrat);
		panel.add(label);
		panel.add(button);
		getContentPane().add(panel);
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
	            panel.repaint();
	            int zahl = quadrat.zufall();
	            label.setText(zahl +"");
	        }
	    });
	}   
}
```


Quadrat.java 


```
@SuppressWarnings("serial")
public class Quadrat extends JPanel{
 
      @Override
  public void paintComponent( Graphics g )
  {      
    int x1 = (int) (Math.random() * 255 + 1);
    int x2 = (int) (Math.random() * 255 + 1);
    int x3 = (int) (Math.random() * 255 + 1);
    g.setColor(new Color(x1,x2,x3));
    g.drawRect(0,0,100,100);
    g.fillRect(0,0,100,100);
  }
      
  public int zufall() {
	  int zahl;
	  zahl = (int) (Math.random() * 6) + 1;
	  return zahl;
  }
 
}
```



Mit Quadrat.add(label); gehts


----------

