Hallo!
ich bin ein Java (und Foren)-Neuling. Habe mich nun seit einiger Zeit mit Java beschäftigt und nun ein kleines Programm geschrieben, das eine leichte Matheaufgabe stellt und mit den Ergebnissen eben umgehen muss. Mir geht es hauptsächlich um den AWT-Part.
Da ich, wie gesagt, keine Erfahrung habe und versuche mich zu verbessern, würde ich den Code gerne reinstellen und mal hören, was Ihr meint: wo etwas schlecht ist, was eleganter wäre usw. Die Mainklasse schenke ich mir, die ruft nur die Fenster-Klasse auf. Bin über Anregungen sehr dankbar. Auch über Tipps, wie man nach den ersten Schritten weitermacht, um sich zu verbessern und "professioneller" zu werden.
Gruß
ich bin ein Java (und Foren)-Neuling. Habe mich nun seit einiger Zeit mit Java beschäftigt und nun ein kleines Programm geschrieben, das eine leichte Matheaufgabe stellt und mit den Ergebnissen eben umgehen muss. Mir geht es hauptsächlich um den AWT-Part.
Da ich, wie gesagt, keine Erfahrung habe und versuche mich zu verbessern, würde ich den Code gerne reinstellen und mal hören, was Ihr meint: wo etwas schlecht ist, was eleganter wäre usw. Die Mainklasse schenke ich mir, die ruft nur die Fenster-Klasse auf. Bin über Anregungen sehr dankbar. Auch über Tipps, wie man nach den ersten Schritten weitermacht, um sich zu verbessern und "professioneller" zu werden.
Gruß
Java:
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class Fenster extends Frame {
private Panel panel1, panel2;
private Button button1, button2, button3;
static public TextField eingabe;
private Label label1;
private Label label2;
private int a, b;
Fenster() {
//Initalisieren des Fensters
super();
this.setLayout(new GridLayout(3, 1));
this.setSize(400, 400);
this.setLocation(700, 400);
//Aufbau des Fensters
//Erstes Panel mit Text und Aufgabe
panel1 = new Panel(new GridLayout(2, 1));
label1 = new Label("Matheaufgaben", Label.CENTER);
label2 = new Label("Zum Starten ´Neue Aufgabe´ drücken", Label.CENTER);
panel1.add(label1);
panel1.add(label2);
//EingabeFeld
eingabe = new TextField(23);
//Zweites Panel (drittes Element) mit den 3 Buttons
panel2 = new Panel();
button1 = new Button("NeueAufgabe");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
neueAufgabe();
}
});
/*Abdeckung der 3 Möglichkeiten:
* 1. Falsche Eingabe
* 2. korrekte Lösung
* 3. falsche Lösung aber korrekte Eingabe
* als Actionhandling wird immer das AntwortFenster aufgerufen in einer
* anonymen Klasse
*/
button2 = new Button("Lösung");
button2.addActionListener(new ActionListener() {
int c;
@Override
public void actionPerformed(ActionEvent e) {
try {
c = Integer.parseInt(eingabe.getText());
} catch (NumberFormatException keineZahl) {
AntwortFenster antfenster = new AntwortFenster();
antfenster.antButton.setLabel("Nochmal");
antfenster.antLabel.setText("Falsche Eingabe");
antfenster.setVisible(true);
return;
}
if ((a + b) == c) {
AntwortFenster antfenster = new AntwortFenster();
dispose();
antfenster.antButton.setLabel("Nächste Aufgabe");
antfenster.antLabel.setText("Korrekt");
antfenster.setVisible(true);
} else {
AntwortFenster antfenster = new AntwortFenster();
antfenster.antButton.setLabel("Nochmal");
antfenster.antLabel.setText("Falsch");
antfenster.setVisible(true);
}
}
});
button3 = new Button("Ende");
button3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
panel2.add(button1);
panel2.add(button2);
panel2.add(button3);
//Hinzufügen ins Frame
this.add(panel1);
this.add(eingabe);
this.add(panel2);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
/*Erzeugt die Zufallszahlen, fügt sie in das Label ein
*und leert das Textfeld
*/
public void neueAufgabe() {
a = (int) (Math.round(Math.random() * 10) + Math
.round(Math.random() * 10));
b = (int) (Math.round(Math.random() * 10) + Math
.round(Math.random() * 10));
String s = (a + " + " + b);
label2.setText(s);
eingabe.setText("");
}
}
Java:
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class AntwortFenster extends Frame {
Button antButton;
Label antLabel;
AntwortFenster() {
super();
this.setSize(300, 100);
this.setLocation(750, 400);
Panel panel = new Panel();
antButton = new Button();
antLabel = new Label();
panel.add(antLabel);
panel.add(antButton);
this.add(panel);
antButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "Nächste Aufgabe") {
dispose();
Fenster fenster = new Fenster();
fenster.neueAufgabe();
fenster.setVisible(true);
} else {
Fenster.eingabe.setText("");
dispose();
}
}
});
}
}