Hallo, hab da ein kleines Lottoprogramm, das auch gut funktioniert.
Jedoch wenn ich auf den Button "Neue Ziehung" clicke, öffnet sich immer wieder ein neues Fenster, da ich ja mit
main(null) gearbeitet habe. Gibt es dafür eine alternative, damit die Zahlen neu ausgegeben werden ohne das ein neues Fenster geöffnet wird?
Jedoch wenn ich auf den Button "Neue Ziehung" clicke, öffnet sich immer wieder ein neues Fenster, da ich ja mit
main(null) gearbeitet habe. Gibt es dafür eine alternative, damit die Zahlen neu ausgegeben werden ohne das ein neues Fenster geöffnet wird?
Code:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class Lotto_awt extends Frame implements ActionListener {
String trenn = ",";
String ergebnis;
Button neu, ende;
Label anzeige1, anzeige2, anzeige3;
Panel panel1, panel2;
public Lotto_awt(String title) {
super(title);
setSize (300,300);
setLocation(300,200);
setResizable(false);
Panel panel1 = new Panel();
panel1.setLayout(new GridLayout(3,1));
panel1.add (anzeige1 = new Label ("Anzahl..."));
panel1.setBackground(Color.lightGray);
panel1.add (anzeige2 = new Label (" Mein Lottotip: "));
Panel panel2 = new Panel();
panel2.setLayout(new FlowLayout(FlowLayout.RIGHT));
panel2.add(neu = new Button ("Neue Ziehung"));
neu.addActionListener(this);
panel2.add(ende = new Button("Ende"));
ende.addActionListener(this);
panel2.setBackground(Color.darkGray);
//Hauptfenster
setLayout(new BorderLayout());
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
setVisible(true);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
System.exit(0);
};
});
}
public void actionPerformed(ActionEvent event){
if (event.getSource() == ende) {
System.exit(0);
}
if (event.getSource() == neu) {
main(null);
}
}
public void paint (Graphics g){
anzeige1.setFont(new Font("Verdana",Font.BOLD,15));
anzeige2.setFont(new Font("Verdana",Font.BOLD,12));
anzeige2.setBackground(Color.red);
anzeige1.setText(" Die Lottozahlen für die nächste Ziehung");
BitSet b = new BitSet();
Random r = new Random();
int cnt = 0;
while (cnt < 6) {
int num = 1 + Math.abs(r.nextInt()) % 49;
if (!b.get(num)) {
b.set(num);
cnt++;
}
}
for (int i = 1; i <= 49; i++){
if (b.get(i)) {
anzeige2.setText(anzeige2.getText()+" "+i);
}
}
}
public static void main (String[] args){
new Lotto_awt("Die Lottozahlen");
}
}