ein Rechner entsteht |
Die nächsten beiden
Bilder zeigen einen Rechner, der über zwei Funktionen verfügt. In den
Eingabefeldern werden die Werte von a und b eingegeben. In unserem
Beispiel sind es die Werte 144 bzw. 60. Im Ausgabefeld erscheint,

je nachdem, welcher Button gedrückt
wurde der ggT der beiden Zahlen, also 12 bzw. das kgV der beiden Zahlen,
also 720. In diesem Kapitel lernen wir, wie wir ein Javaprogramm
schreiben, das auf Drücken unterschiedlicher Buttons auch unterschiedlich
reagiert. Wir schauen uns dazu den Quelltext des Programms etwas genauer
an.
Um die beiden Eingabefelder für den
Benutzer unterscheidbar zu machen, sollen ihnen Beschriftungen beigefügt
werden. In Java, sind dies sog. Labelobjekte. Da der Norden in vier
Felder und das Zentrum in zwei nebeneinander stehende Felder unterteilt
werden sollen, deklarieren wir ein
nordPanel
und ein centerPanel
und versehen beide mit einem sog. Gridlayout. Ein Blickj in die API zeigt,
dass drei Gridlayout-Konstruktoren zur Verfügung stehen:
Constructor Summary |
GridLayout()
Creates a grid layout with a default of one column per
component, in a single row. |
GridLayout(int rows, int cols)
Creates a grid layout with the specified number of rows and
columns. |
GridLayout(int rows, int cols, int hgap, int vgap)
Creates a grid layout with the specified number of rows and
columns. |
Das Feld, das wir dem Norden
zuweisen, bekommt ein Layout über den ersten, das Feld des Zentrums ein
Layout des dritten Konstruktors.
hgab und
vgab
definieren dabei die horizontalen bzw. vertikalen Abstände zwischen den
Zellen.
Dass bei der Ereignisbehandlung
unterschieden werden muss, welcher Schalter das Ereignis ausgelöst hat,
haben wir schon früher kennen gelernt.
|
Download:
RechnerGUI. java |
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RechnerGUI extends JFrame implements ActionListener{
// Anfang Variablen
JPanel centerPanel, nordPanel;
JLabel aLabel, bLabel;
JButton ggTButton, kgVButton;
JTextField eingabeFeldA, eingabeFeldB, ausgabeFeld;
// Ende Variablen
public RechnerGUI (String title) {
// Frame-Initialisierung
super (title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(250, 100);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
nordPanel = new JPanel(new GridLayout());
cp.add(nordPanel,BorderLayout.NORTH);
centerPanel = new JPanel(new GridLayout(1,2,10,10));
cp.add(centerPanel,BorderLayout.CENTER);
// Anfang Komponenten
aLabel = new JLabel("a:");
nordPanel.add(aLabel);
eingabeFeldA = new JTextField("0");
eingabeFeldA.setHorizontalAlignment(eingabeFeldA.RIGHT);
nordPanel.add(eingabeFeldA);
bLabel = new JLabel("b:");
nordPanel.add(bLabel);
eingabeFeldB = new JTextField("0");
eingabeFeldB.setHorizontalAlignment(eingabeFeldB.RIGHT);
nordPanel.add(eingabeFeldB);
ggTButton = new JButton("ggT");
centerPanel.add(ggTButton);
ggTButton.addActionListener(this);
kgVButton = new JButton("kgV");
centerPanel.add(kgVButton);
kgVButton.addActionListener(this);
ausgabeFeld = new JTextField();
ausgabeFeld.setHorizontalAlignment(ausgabeFeld.RIGHT);
cp.add(ausgabeFeld,BorderLayout.SOUTH);
ausgabeFeld.setEditable(false);
// Ende Komponenten
setVisible(true);
}
// Anfang Ereignisprozeduren
public void actionPerformed(ActionEvent e){
String ausgabeText="";
int eingabeWertA = Integer.parseInt(eingabeFeldA.getText());
int eingabeWertB = Integer.parseInt(eingabeFeldB.getText());
Object obj = e.getSource();
if(obj == ggTButton){
ausgabeText = ""+Mathematik.ggT(eingabeWertA,eingabeWertB);
}
if(obj == kgVButton){
ausgabeText = ""+Mathematik.kgV(eingabeWertA,eingabeWertB);
}
ausgabeFeld.setText(ausgabeText);
}
// Ende Ereignisprozeduren
public static void main (String[] args) {
new RechnerGUI("Rechner");
}
}
|