Fachhochschule München Bereich Datentechnik Fachbereich Elektrotechnik und Informationstechnik Prof. Dr. Alfred Irber Prüfung aus PROGRAMMIERUNG GRAPHISCHER OBERFLÄCHEN (SS 2003) Arbeitszeit 90 Minuten Beliebige eigene Unterlagen Aufgabenblatt bitte abgeben ! 21.Juli 2003 **** Viel Erfolg !!! **** 1. Aufgabe (25 P) Die Java- Applikation „Textfield-Demo“ , dient zur Eingabe von Text. Der zugehörige Code ist zum Teil im Anhang gegeben. a) Ergänzen Sie den Code so, dass beim Drücken des x-Kreuzes die Applikation beendet wird. Verwenden Sie hierbei einen geeigneten EventListener und realisieren Sie ihn als anonyme Klasse. (5) b) In das Textfeld soll beliebiger Text eingegeben und editiert werden können. Die Eingabe von Ziffern soll allerdings nicht möglich sein. Erweitern Sie den Programmcode um diese Funktionalität. (15) c) Ergänzen Sie das Programm zur voll lauffähigen Applikation. (5) Fachhochschule München Bereich Datentechnik Fachbereich Elektrotechnik und Informationstechnik Prof. Dr. Alfred Irber PROGRAMMIERUNG GRAPHISCHER OBERFLÄCHEN Beiblatt Zur 1. Aufgabe package textfieldemo; import java.awt.*; import java.awt.event.*; public class TextfeldDemo extends Frame { TextField textField=null; public TextfeldDemo() { //Frame super("Textfeld-Demo"); setBackground(Color.lightGray); setSize(250,150); setLocation(200,200); setVisible(true); setResizable(false); setLayout(null); //Label Label label1= new Label("Eingabefeld"); label1.setBounds(50,40,100,30); add(label1); //TextFeld textField= new TextField(); textField.setBounds(50,70,150,25); textField.setEditable(true); add(textField); } . . . (SS 2003) -22. Aufgabe (25P) Die dargestellte Java-Applikation erlaubt es durch Drücken des Buttons „-->“ das selektierte Listenelemente von Liste1 nach Liste2 zu verschieben und umgekehrt. Ferner gelten folgende Randbedingungen: - Es darf immer nur 1 Listenelement in Liste1 oder Liste2 selektiert sein, d.h bei Selektion eines Elementes ist ein eventuell selektiertes Element der anderen Liste zu deselektieren. - Ist ein Element in der linken Liste selektiert, so muss der --> Button aktiviert sein der <-- Button dagegen deaktiviert. - Beim Drückern des Buttons wird das selektierte Element von der linken Liste gelöscht und in der rechte Liste am Ende eingefügt und umgekehrt. a) Erweitern Sie das im Anhang gegebene Codegerüst so, dass oben genannte Funktionaltät realisiert wird. Bei der Realisierung darf von jedem Listenertyp nur 1 Exemplar verwendet werden. Fachhochschule München Bereich Datentechnik Fachbereich Elektrotechnik und Informationstechnik Prof. Dr. Alfred Irber PROGRAMMIERUNG GRAPHISCHER OBERFLÄCHEN Beiblatt Zur 2. Aufgabe //ZweiListenGui.java package zweilisten; import java.awt.*; import java.awt.event.*; public class ZweiListenGui extends Frame { //Klassenvariable //AWT-Steuerelemente List list1 = new List(); List list2 = new List(); Button btnLinksRechts=null; Button btnRechtsLinks=null; public ZweiListenGui() { super("Zwei Listen"); setBackground(Color.lightGray); setSize(500,300); setLocation(200,200); setVisible(true); setResizable(false); setLayout(null); //Button "LinksRechts" --> btnLinksRechts= new Button("-->"); btnLinksRechts.setBounds(200,130,100,30); btnLinksRechts.setEnabled(false); add(btnLinksRechts); //Button "RechtsLinks" <-btnRechtsLinks= new Button("<--"); btnRechtsLinks.setBounds(200,170,100,30); btnRechtsLinks.setEnabled(false); add(btnRechtsLinks); //Liste1 list1.setBounds(50,100,100,150); list1.setMultipleMode(false); //Single Select add(list1); //Liste2 list2.setBounds(350,100,100,150); list2.setMultipleMode(false); ); //Single Select add(list2); //Labels Label label1= new Label("Liste1"); label1.setBounds(50,60,100,30); add(label1); Label label2= new Label("Liste2"); (SS 2003) label2.setBounds(350,60,100,30); add(label2); //Liste1 füllen list1.add("Abel"); list1.add("Galler"); list1.add("Huber"); list1.add("Irber"); list1.add("Kugler"); list1.add("Schuster"); } } //ZweilistenMain.java import java.awt.event.*; public class ZweiListenMain { public ZweiListenMain() { ZweiListenGui gui = new ZweiListenGui(); public static void main(String[] args) { ZweiListenMain zweiListenMain1 = new ZweiListenMain(); } } -33. Aufgabe (40 P) Die dargestellte Oberfläche einer Java-Datenbank-Applikation erlaubt das Modifizieren einer Namenstabelle tb_namen, die in einer MySQL-Datenbank abgelegt ist. Datenbankseitig verfügt die Tabelle aus den 2 Spalten ID und Namen., wobei die ID-Spalte als Primärschlüssel verwendet wird und die Eigenschaft auto_increment besitzt. Auf der Java-Oberfäche dargestellt wird nur die Namenspalte. Die Applikation verfügt über folgende Menüpunkte: File/Öffnen: Der Inhalt der Datenbanktabelle wird auf der Oberfläche dargestellt Bearbeiten/Zeile löschen: Auf Oberfläche und Datenbank wird die selektierte Zeile gelöscht Bearbeiten/Leere Zeile einfügen: Auf Oberfläche und Datenbank wird eine leere Zeile eingefügt. Ferner kann jede Zeile editiert werden. Das Editieren einer Zeile führt zu einem sofortigen Update des korrespondierenden Datensatzes in der Datenbank. Weitere Details können dem beigefügten Codefragment entnommen werden. PS: Zur Vereinfachung können Sie davon ausgehen, dass sich alle Datensätze neben der ID auch im Namen unterscheiden. a) Ergänzen Sie im Anhang in der Klasse ClsDbNamenMapper die Methode EinfuegenNamenInDB(..) so, dass der übergebene Namen in die Datenbanktabelle eingefügt wird. (5 P) b) Ergänzen Sie in der Klasse ClsDbNamenMapper die Methode LoeschenNamenAusDB(..) so, dass der übergebene Namen aus der Datenbanktabelle gelöscht wird. (5 P) c) Ergänzen Sie in der Klasse ClsDbNamenMapper die Methode UpdateNamenInDB(..) so, dass der übergebene String sAlterName durch den ebenfalls übergebenen String sNeuerName ersetzt wird. Hierbei darf kein Datensatz gelöscht werden. (5P) e) Ergänzen Sie in der Klasse Frame1 die Methode jMenuItemZeileLoeschen_actionPerformed so, dass - wie oben bereits beschrieben – die selektierte Zeile auf der Oberfläche und in der Datenbank gelöscht wird. (15P) f) Welche Methode wird automatisch aufgerufen, falls der Editiervogang einer Zelle z.B durch Drücken der Return-Taste beendet wird (5P) g) Erweitern Sie diese Methode so, dass der editierte Datensatz auch in der Datenbank aktualisiert wird.(5P) *** Ende ***