Anwendungspraktikum aus JAVA Albert Weichselbraun 11. Oktober 2005 Ablauf • Einführung: Swing • Problemstellung - Ein-/Ausgabenrechnung • Überblicksreferate über die Java-API • Software Projekt - Problemdefinition - Projektplan - Modellierung - Implementierung - Test - Abnahme und Präsentation A NWENDUNGSPRAKTIKUM AUS JAVA -1- 1. M ÄRZ 2006 Wichtige Termine • 11. Oktober: Organisatorisches, Einführung: Swing + Beispiele, Vergabe der Referate • 18. Oktober: erste Referate, Projektvergabe • 25. Oktober: Abgabe der Problemdefinition • 22. November 2005: letzten Referate, Abgabe von Zeitplan, Modellierung (UML), ... • 24. Jänner 2005: letzter möglicher Abgabetermin für das Gesamtprojekt; Präsentation der Projekte A NWENDUNGSPRAKTIKUM AUS JAVA -2- 1. M ÄRZ 2006 Beurteilungsschema: • 10 % Hausübungen • 20 % Vortrag/Ausarbeitung: Java API • 55 % Anwendungsprojekt - 25 % Dokumentation - 30 % Ausführung • 15 % Mitarbeit (Anwesenheit in der LV, konkrete Mitarbeit am Projekt, ...) A NWENDUNGSPRAKTIKUM AUS JAVA -3- 1. M ÄRZ 2006 Referate • 18. Oktober 2005: Collections, Swing • 25. Oktober 2005: IO and NewIO, Java2D • 8. November 2005: Serialisierung, Java Networking • 15. November 2005: Preferences API, Javadoc • 22. November 2005: Multithreading, RMI A NWENDUNGSPRAKTIKUM AUS JAVA -4- 1. M ÄRZ 2006 GUIs mit Swing • Swing setzt auf AWT auf • leichtgewichtige Komponenten • Realisiert die MVC (Model-View-Controller) Architektur • Elemente: siehe Index http://java.sun.com/docs/books/tutorial/ uiswing/components/components_pics.html A NWENDUNGSPRAKTIKUM AUS JAVA -5- 1. M ÄRZ 2006 Vorgangsweise 1. Layout festlegen • Position der Komponenten • Anordnung von JPanels / Wahl des Layoutmanagers 2. Grafische Komponenten festlegen 3. Eventhandling definieren A NWENDUNGSPRAKTIKUM AUS JAVA -6- 1. M ÄRZ 2006 Layout festlegen package swingdemo; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MyGUI extends JFrame { public MyGUI(String title) { super(title); } A NWENDUNGSPRAKTIKUM AUS JAVA -7- 1. M ÄRZ 2006 public static void main(String[] args) { MyGUI mg = new MyGUI("Swing Test"); mg.pack(); mg.setVisible(true); } } A NWENDUNGSPRAKTIKUM AUS JAVA -8- 1. M ÄRZ 2006 Elemente hinzufügen public class MyGUI extends JFrame { // Elemente hinzufügen private JTextArea textFeld = new JTextArea("Text", 3, 10); private JTextField texteingabe = new JTextField("Neuer Text"); private JButton addButton, clearButton; public MyGUI(String title) { super(title); A NWENDUNGSPRAKTIKUM AUS JAVA -9- 1. M ÄRZ 2006 // Elemente hinzufügen JPanel panel = new JPanel(); addButton = new JButton("Add"); clearButton = new JButton("Clear"); panel.add(texteingabe); panel.add(addButton); panel.add(clearButton); this.add(panel, BorderLayout.NORTH); this.add(textFeld, BorderLayout.SOUTH); } A NWENDUNGSPRAKTIKUM AUS JAVA - 10 - 1. M ÄRZ 2006 Eventhandling definieren public class MyGUI extends JFrame implements ActionListener { ... public MyGUI(String title) { super(title); ... // eventhandling addButton.addActionListener( this ); A NWENDUNGSPRAKTIKUM AUS JAVA - 11 - 1. M ÄRZ 2006 clearButton.addActionListener( this ); } public void actionPerformed(ActionEvent e) { if (e.getSource() == clearButton) { textFeld.setText(""); } if (e.getSource() == addButton) { textFeld.setText( textFeld.getText() + ’\n’ + texteingabe.getText() ); } } A NWENDUNGSPRAKTIKUM AUS JAVA - 12 - 1. M ÄRZ 2006 Erweiterung - scrollbares Textfeld ... // scrolling JScrollPane sp = new JScrollPane(textFeld) this.add(sp, BorderLayout.SOUTH); ... A NWENDUNGSPRAKTIKUM AUS JAVA - 13 - 1. M ÄRZ 2006 Ein-/Ausgabenrechnung (Teil 1) 1. Erstellen Sie eine Klasse Buchung. Jede Buchung soll ein Datum, einen Wert und einen Buchungstext besitzen. 2. Das Programm soll Ein- und Ausgaben buchen können. Ausgaben verfügen über eine numerische Kostenstellen-ID, während es bei Einnahmen möglich sein soll, den Kunden über ein Textfeld zu ermitteln. Implementieren Sie die entsprechenden Klassen Einnahme und Ausgabe. 3. Implementieren sie die Ein-/Ausgabenrechnung mittels der Klassen Ein- und Ausgabe. Es soll möglich sein die Summe der Ein- und Ausgaben sowie den Gesamtkontostand zu berechnen und am Bildschirm auszugeben. A NWENDUNGSPRAKTIKUM AUS JAVA - 14 - 1. M ÄRZ 2006 Ein-Ausgabenrechnung (Teil 2) 1. Designen Sie mittels Swing eine GUI für die Ein/Ausgabenrechnung. Es soll zumindest möglich sein neue Buchungen hinzuzufügen und alte zu löschen. 2. Implementieren Sie Persistenz - sämtliche Ein- und Ausgaben sollen beim Beenden der Applikation gespeichert werden und beim Neustart wieder zur Verfügung stehen. A NWENDUNGSPRAKTIKUM AUS JAVA - 15 - 1. M ÄRZ 2006