[AWT] Lottozahlengenerator, Aktualisieren-Button?

dsone

Grünschnabel
Hi,
Ich muss als Aufgabe, für die Schule, einen Lottozahlengenerator basteln. Der Code muss mind. 200 Zeilen lang sein, daher habe ich soviel Design Boxen gemacht.

Jetzt meine Frage: wie bekomme ich einen Button unter die Lottozahlen, der das Fenster aktualisiert und somit neue Zahlen generiert?

Wäre so froh wenn mir hier jemand helfen könnte, bei google und forum suche leider nicht brauchbares gefunden.

Gruss und Danke
dsone

Code:
import java.awt.*;

public class lotto extends Frame {
	

public static void main(String[] args) {
	
	lotto lottofenster = new lotto();
	
	/***************************
	*** Fenstereigenschaften ***
	****************************/
	
	// Titel des Lottofensters
	lottofenster.setTitle("Lottozahlengenerator");
	
	// Hintergrundfarbe des Lottofensters
	lottofenster.setBackground(new java.awt.Color(7,108,190));
	
	// Cursor (Fadenkreuz) des Lottofensters
	lottofenster.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
	
	// Grösse des Lottofensters
	lottofenster.setSize(400,450);
	
	// Lottofenster sichtbar? Ja!
	lottofenster.setVisible(true);		

}

public void paint(Graphics g) {
	
	int lottozahlen;													// Variable fuer die Lottozahlen
	int lottozahlen_pruefen;											// Variable fuer das pruefen der Lottozahlen
	int anzahl;															// Variable fuer Anzahl der Lottozahlen
	int ganze_zahl;
	
	double wert;
	boolean doppelt;
	
	anzahl = 6;															// Wert 6, für 6 Lottozahlen
	
	int lottozahl[] = new int[anzahl+1];								// Deinition eines Feldes mit einem Platz mehr
	for (lottozahlen = 1; lottozahlen <= anzahl; lottozahlen++)				// Anzahl der Zufallszahlen
	{
		do																// Schleife zur Feststellung von Doppelungen
		{
			doppelt = false;												// Es gibt zunächst keine Doppelten
			wert = 44*Math.random()+1; 									// Erzeuge eine Zufallszahl zwischen 1 und 45
			ganze_zahl = (int)wert;										// Mache daraus eine ganze Zahl
			
			for (lottozahlen_pruefen = 1; lottozahlen_pruefen < lottozahlen; lottozahlen_pruefen++)			// alle bisherigen (i) überprüfen
			{
				if (ganze_zahl == lottozahl[lottozahlen_pruefen])
				{
					doppelt=true;										// doppelte gefunden, merken in doppelt
				}	
			
			}
		}
		
		while (doppelt==true);
		lottozahl[lottozahlen]=ganze_zahl;									// gefundene Zahlmerken
		System.out.print(+lottozahl[lottozahlen]+"\t");					// und diese ausgeben		
	}
	
	Button myButton = new Button ("Ein Button");
	this.add(myButton);
	
	String lottozahl_1 = Integer.toString(lottozahl[1]);
	String lottozahl_2 = Integer.toString(lottozahl[2]);
	String lottozahl_3 = Integer.toString(lottozahl[3]);
	String lottozahl_4 = Integer.toString(lottozahl[4]);
	String lottozahl_5 = Integer.toString(lottozahl[5]);
	String lottozahl_6 = Integer.toString(lottozahl[6]);
	
	/***************************
	*** Background BOX		 ***
	****************************/
	
	g.setColor(new Color(118,190,250));									//
	g.fillRect(14,34,242,42);											// 
	
	g.setColor(new Color(21,146,247));									//
	g.fillRect(15,35,240,40);											// 
	
	
	/***************************
	*** BOX 1  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 1
	g.fillRect(20,40,30,30);											// Grösse von schwarzen Box 1
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 1
	g.fillRect(21,41,28,28);											// Grösse von hellgrauer Box 1
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 1
	g.fillRect(22,42,26,26);											// Grösse von weisser Box 1
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_1, 27, 60);									// Lottozahl 1 in der Box 1 zeichnen
	
	/***************************
	*** BOX 2  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 2
	g.fillRect(60,40,30,30);											// Grösse von schwarzen Box 2
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 2
	g.fillRect(61,41,28,28);											// Grösse von hellgrauer Box 2
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 2
	g.fillRect(62,42,26,26);											// Grösse von weisser Box 2
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_2, 67, 60);									// Lottozahl 2 in der Box 2 zeichnen
	
	/***************************
	*** BOX 3  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 3
	g.fillRect(100,40,30,30);											// Grösse von schwarzen Box 3
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 3
	g.fillRect(101,41,28,28);											// Grösse von hellgrauer Box 3
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 3
	g.fillRect(102,42,26,26);											// Grösse von weisser Box 3
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_3, 107, 60);									// Lottozahl 3 in der Box 3 zeichnen
	
	/***************************
	*** BOX 4  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 4
	g.fillRect(140,40,30,30);											// Grösse von schwarzen Box 4
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 4
	g.fillRect(141,41,28,28);											// Grösse von hellgrauer Box 4
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 4
	g.fillRect(142,42,26,26);											// Grösse von weisser Box 4
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_4, 147, 60);									// Lottozahl 4 in der Box 4 zeichnen
	
	/***************************
	*** BOX 5  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 5
	g.fillRect(180,40,30,30);											// Grösse von schwarzen Box 5
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 5
	g.fillRect(181,41,28,28);											// Grösse von hellgrauer Box 5
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 5
	g.fillRect(182,42,26,26);											// Grösse von weisser Box 5
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_5, 187, 60);									// Lottozahl 5 in der Box 5 zeichnen
	
	/***************************
	*** BOX 6  				 ***
	****************************/
	
	g.setColor(Color.BLACK);											// Schwarzes Rechteck von Box 6
	g.fillRect(220,40,30,30);											// Grösse von schwarzen Box 6
	g.setColor(Color.LIGHT_GRAY);										// Hellgraues Rechteck von Box 6
	g.fillRect(221,41,28,28);											// Grösse von hellgrauer Box 6
	g.setColor(Color.WHITE);											// Weisses Rechteck von Box 6
	g.fillRect(222,42,26,26);											// Grösse von weisser Box 6
	
	g.setColor(Color.BLACK);											// Farbe der Schrift (Schwarz)
	g.drawString(lottozahl_6, 227, 60);									// Lottozahl 6 in der Box 6 zeichnen

    }

public boolean handleEvent(Event e) {
  if (e.id == Event.WINDOW_DESTROY)
  System.exit(0);
  return super.handleEvent(e);
}
}
 
Hallo Dsone,

wieso zeichnest du alles auf das Frame. Viel einfacher ist es doch mit AWT Komponenten.

Java:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

public class LottoGenerator extends Frame implements ActionListener {

	private Label l = new Label("Lotto Generator 2006");
	
	private Panel p = new Panel();
	
	private TextField[] t = new TextField[6];
	
	private Button b = new Button("Generate new Combination");
	
	public LottoGenerator() {
		super("Lotto Magic ");
		this.setLocationByPlatform(true);
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		b.addActionListener(this);
		
		p.setLayout(new GridLayout(1,6));
		for (int i = 0; i < t.length; i++) {
			t[i] = new TextField(2);
			t[i].setEditable(false);
			t[i].setFocusable(false);
			p.add(t[i]);
		}
		
		this.add(l,BorderLayout.NORTH);
		this.add(p,BorderLayout.CENTER);
		this.add(b,BorderLayout.SOUTH);
		
		this.pack();
		
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		new LottoGenerator();
	}

	public void actionPerformed(ActionEvent e) {
		
		for (int i = 0; i < t.length; i++) {
			t[i].setText("Zahl");
		}
	}
}


Vg Erdal
 
Hi flashray,
ich kenne mich in Java leider noch ned wirklich gut aus.
Das mit dem zeichnen haben wir in der Schule eben angeschaut. In der Aufagbenstellung steht, man sollte keinen Fremdcode benutzen. Dazu sollte ich jede Codezeile verstehen und erklären können. Am liebsten wäre mir, wenn mir jemand einen Aktualisieren-Button in meinen Code zaubern könnte. :p

Lieber Gruss
dsone
 
Hallo Dsone,

füge folgenden Code noch hinzu:
Code:
	public lotto (){
		Button myButton = new Button("Ein Button");
		this.add(myButton,BorderLayout.SOUTH);
	}

und lösche die zwei ähnlichen Zeilen aus der Methode paint.

Vg Erdal
 
Zurück