19.3 Mehrere Eingabefelder
 
ggT Wollen wir unser kleines Programm so umbauen, dass wir die Methode ggT(int a, int b) aus der Klasse Mathematik verwenden können, benötigen wir zwei Eingabefelder für die beiden Parameter a und b in ggT(a,b).
 
Problem Was muss man alles an unserem Programm EinUndAusgabe ändern, dass wir für den ggT-Rechner das folgende Aussehen bekommen?
 

Im Norden unseres Containers haben wir jetzt 4 Grafikobjekte. Von links nach rechts sind dies ein Label mit der Aufschrift 'a:', ein Eingabefeld, ein zweites Label mit der Aufschrift 'b:' und schließlich ein zweites Eingabefeld. Der Rest bleibt unangetastet bis auf die Aufschrift des Buttons und die Funktionalität der actionPerfortmed(ActionEvent e) - Methode.
 

Quelltext 


Download:
GGT.java

Mathematik. class

 

 

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GGT extends JFrame implements ActionListener{
  // Anfang Variablen
  private JTextField eingabeFeldA, eingabeFeldB, ausgabeFeld;
  private JLabel aLabel, bLabel;
  private JButton rechenButton;
  private JPanel nordPanel;                                   #1
  // Ende Variablen

  public GGT (String title) {
    // Frame-Initialisierung
    super (title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent evt) {System.exit(0);}});
    setSize(200, 100);

    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());
    
    nordPanel = new JPanel(new GridLayout());                #2
    cp.add(nordPanel,BorderLayout.NORTH);                    #3

    // 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);

    rechenButton = new JButton("ggT[a,b]");
    cp.add(rechenButton,BorderLayout.CENTER);
    rechenButton.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){
    int a = Integer.parseInt(eingabeFeldA.getText());
    int b = Integer.parseInt(eingabeFeldB.getText());
    ausgabeFeld.setText(""+ Mathematik.ggT(a,b));    
  }
  // Ende Ereignisprozeduren

  public static void main (String[] args) {
    new GGT("ggT-Rechner");
  }
}
Kommentare


 

Veränderungen gab es lediglich in den gelb unterlegten Zeilen. Die meisten Änderungen erklären sich aber von selbst.

In Zeile #1 wird ein JPanel-Objekt deklariert, es soll die Anordnungsstruktur der Grafikobjekte im 'Norden' organisieren helfen. In den Zeilen #2 und #3 wird das Layout auf GridLayout gesetzt. Das hat zur Folge, dass die hier untergebrachten Grafik-Objekte in der Reihenfolge, wie sie zugefügt werden, auch dort angeordnet werden. Dabei passt sich die Größe an. Werden also nacheinander 4 Grafikobjekte im NordPanel  abgelegt, so wird der Platz im Norden für die Aufnahme der Objekte in vier gleiche Teile aufgeteilt.

   

zu den   

Hausaufgaben
zur Startseite www.pohlig.de  (C) MPohlig 2003