/***************************************************************/ /* Prof. Dr. Gregor Büchel */ /* Source : Graph3.java */ /* Beispielprogramm für AWT-Methoden der GUI-Verarbeitung mit */ /* einem einfachen Frame. */ /* Stand: 18.05.2003 */ /***************************************************************/ import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; /* Klasse für den EXIT-Button eines jeden Fensters */ class Wexit extends WindowAdapter {public void windowClosing(WindowEvent e) {e.getWindow().setVisible(false); e.getWindow().dispose(); } } /* Klasse für den Lauscher auf ein Textfeld */ class Textohr implements ActionListener {String rs1; /* fuer die Uebergabe nach main() */ /* Zur Kommunikation mit dem Frame, dessen */ /* Textfeld belauscht wird */ Frame fz; Textohr(Frame x) {fz=x; } public void actionPerformed(ActionEvent e) {String r; int n; Label lx; r=new String(); r=e.getActionCommand(); n=fz.getComponentCount(); System.out.println("Textohr: "+r); System.out.println("Komponentenanzahl des Frames: "+n); lx=(Label)fz.getComponent(2); lx.setText("Ihre Eingabe: >"+r+"< ist notiert."); rs1=r; } } class Erf {String stadt; String land; String fluss; } /* Klasse für den Lauscher auf einen Button */ class Schaltohr implements ActionListener {/* Der via Button belauschte Frame */ Frame fz; Erf ef1; static LinkedList ls; Schaltohr(Frame x) {fz=x; ls=new LinkedList(); } public void actionPerformed(ActionEvent e) {String r,sh; TextField txr; Label lxr; int n,m; sh=new String(); r=e.getActionCommand(); txr=new TextField(); System.out.println("Schaltohr: >"+r+"<-BUTTON"); if (r.equals("weiter")) { /* Der komplette Frame wird geputzt */ fz.removeAll(); neuaufbau(fz); fz.setVisible(true); } if (r.equals("INSERT")) { n=fz.getComponentCount(); System.out.println("Komponentenanzahl des Frames: "+n); ef1=new Erf(); txr=(TextField)fz.getComponent(1); ef1.stadt=txr.getText(); txr=(TextField)fz.getComponent(3); ef1.land=txr.getText(); txr=(TextField)fz.getComponent(5); ef1.fluss=txr.getText(); sh=":::"+ef1.stadt+":"+ef1.land+":"+ef1.fluss; System.out.println(sh); ls.add(ef1); m=ls.size(); System.out.println("Listenlaenge: "+m); lxr=(Label)fz.getComponent(6); lxr.setText("Daten:"+sh+" . Mit INSERT kann weiter erfasst werden."); } if (r.equals("PUTZEN")) { n=fz.getComponentCount(); System.out.println("Komponentenanzahl des Frames: "+n); txr=(TextField)fz.getComponent(1); txr.setText(""); txr=(TextField)fz.getComponent(3); txr.setText(""); txr=(TextField)fz.getComponent(5); txr.setText(""); lxr=(Label)fz.getComponent(6); lxr.setText("-------------------------------------------------------------------------------------------"); } } int neuaufbau(Frame x) {int ir=1; Label ln1=new Label("Stadt: "); Label ln2=new Label("Land: "); Label ln3=new Label("Fluß : "); Label nnz=new Label("-------------------------------------------------------------------------------------------"); TextField tn1=new TextField(40); TextField tn2=new TextField(40); TextField tn3=new TextField(40); Button bn1=new Button("INSERT"); Button bn3=new Button("PUTZEN"); tn1.setBackground(Color.yellow); tn2.setBackground(Color.yellow); tn3.setBackground(Color.yellow); x.add(ln1); x.add(tn1); x.add(ln2); x.add(tn2); x.add(ln3); x.add(tn3); x.add(nnz); Schaltohr bon1=new Schaltohr(x); bn1.addActionListener(bon1); x.add(bn1); Schaltohr bon3=new Schaltohr(x); bn3.addActionListener(bon3); x.add(bn3); return ir; } } class Graph3 { public static void main(String args[]) throws IOException {int i1=1, iz=0,n=-1,i; String sh1; sh1=new String(); Erf a1; String s1=new String("Fiat Frame"); /* Ein Frame ist ein Container (ein Fenster mit Rahmen) */ Frame f1=new Frame(s1); /* Zuordnung des Layout-Managers */ f1.setLayout(new FlowLayout()); /* Damit der EXIT-Button des Frames arbeitet: */ Wexit w1=new Wexit(); f1.addWindowListener(w1); /* Ein Label ist ein Etikett, Nachrichten können damit in */ /* ein Fenster ausgegeben werden. */ Label l1=new Label(); Label l3=new Label(); Button b1=new Button("weiter"); /* Ein Textfeld für Ein- und Ausgaben */ TextField tf1=new TextField("Muster",20); /* Lauscher für das Textfeld */ Textohr to1=new Textohr(f1); tf1.addActionListener(to1); /* Lauscher für den Button */ Schaltohr bo1=new Schaltohr(f1); b1.addActionListener(bo1); do {iz=iz+1; System.out.println("Gregors Grafik-Bastelstube arbeitet: "); System.out.println(" (1) Einen leeren Frame anzeigen"); System.out.println(" (2) Frame mit Label, Button und Textfeld"); System.out.println(" (0) ENDE"); i1=IO1.einint(); switch(i1) {case 1: f1.setSize(400,200); f1.setVisible(true); break; case 2: f1.setSize(400,300); l1.setText("Eingaben/Ausgaben: "); l3.setText("Bitte machen Sie eine Eingabe im Textfeld!"); f1.add(l1); tf1.setBackground(Color.yellow); f1.add(tf1); f1.add(l3); f1.add(b1); f1.setVisible(true); /* ... */ break; case 0: i1=0; break; default: } System.out.println("Das Ergebnis der Erfassung ->"+to1.rs1+"<-"); System.out.println("<"+iz+".Dialogschritt>"); n=bo1.ls.size(); System.out.println("Listenlaenge: "+n+" Listenelemente:"); FileWriter pta = new FileWriter("FLUSS.AUS"); PrintWriter pma = new PrintWriter(pta); for(i=0;i