|
In diesem GUI-Beispiel wird eine Zufallsszahl erzeugt, die der Anwender raten soll.
Dazu gibt dieser einen Wert in ein Textfeld ein und aktiviert per Mausklick (ActionListener) eine Prüfungsmethode.
Der eingegebene Wert wird gelesen und in einen Integer gewandelt. Tritt dabei ein Fehler auf (catch), dann wird ein Fehlerhinweis ausgegeben.
Sonst (try) wird die eingegebene Zahl mit der Zufallszahl verglichen und das Ergebnis (Zahl zu klein / zu gross / Treffer) auf einem Label angezeigt.
Hier der Quellcode zum oben beschiebenen Programm:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class GuiZahlRaten extends JFrame {
private JLabel labelInfo, labelEingabe, labelErgebnis;
private JTextField textfeldEingabe;
private JButton buttonPruefe;
private final int min = 1;
private final int max = 10;
private int zufallsZahl = 1 + (int) (Math.random() * max);
public GuiZahlRaten() {
setTitle("Zahlen raten");
getContentPane().setBackground(Color.ORANGE);
getContentPane().setLayout(new BorderLayout(9, 9));
labelInfo = new JLabel("Zahl zwischen " + min + " und " + max + " raten");
labelInfo.setFont(new Font("Arial", Font.BOLD, 14));
getContentPane().add("North", labelInfo);
labelEingabe=new JLabel("Zahl: ");
getContentPane().add("West", labelEingabe);
textfeldEingabe=new JTextField();
getContentPane().add("Center", textfeldEingabe);
buttonPruefe=new JButton("Pruefen");
getContentPane().add("East", buttonPruefe);
buttonPruefe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pruefeEingabe();
}
});
labelErgebnis=new JLabel("");
labelErgebnis.setPreferredSize(new Dimension(100, 30));
getContentPane().add("South", labelErgebnis);
pack();
setVisible(true);
}
// Eingabe in Integer wandeln
// - wenn Eingabe ein Integer (try), dann diese auswerten
// - wenn Eingabe kein Integer (catch), dann Fehlermeldung
private void pruefeEingabe(){
int eingabeWert;
try {
eingabeWert=Integer.parseInt(textfeldEingabe.getText());
if (eingabeWert == zufallsZahl) {
labelErgebnis.setText(eingabeWert+" ist die gesuchte Zahl");
buttonPruefe.setEnabled(false); // Button deaktivieren
} else if (eingabeWert > zufallsZahl) {
labelErgebnis.setText(eingabeWert+ " ist zu gross");
} else {
labelErgebnis.setText(eingabeWert+ " ist zu klein");
}
} catch (Exception e) {
labelErgebnis.setText("Eingabefehler!");
}
}
}
Testklasse zum Starten der Anwendung
public class Test {
public static void main(String[] args) {
GuiZahlRaten zr=new GuiZahlRaten();
}
}
|