42
Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1 Graphische Oberflächen – Teil 2 AWT und Swing Grundlegender Aufbau von GUIs Graphikausgabe Layoutmanagement Ereignismodell Menus und Actions GUI Elemente

Graphische Oberflächen – Teil 2 · 2004. 3. 26. · GUI-Komponente implementiert Listener und meldet sich bei Komponente an Vorteile: • einfach Nachteil: • wenn viele unterschiedliche

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1����������������������������

    ��������������������������� Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 1

    Graphische Oberflächen – Teil 2

    AWT und Swing

    Grundlegender Aufbau von GUIs

    Graphikausgabe

    Layoutmanagement

    Ereignismodell

    Menus und Actions

    GUI Elemente

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 2����������������������������

    ���������������������������

    Inhalt

    � AWT und Swing

    • Unterschied

    • Einbettung von Swing in AWT

    � Grundlegender Aufbau von Swing GUIs

    • Frames, Windows, Dialogs

    • Panels

    � Graphikausgabe

    • Positionierung

    • paintComponent und AWT-Thread

    • Graphics und Ausgabeoperationen

    � Aufbau und Positionierung

    • Component-Hierarchy

    • LayoutManagement

    • Spezielle Anordnungen: JTabbedPane, JSplitPane, JScrollPane, JInternalFrame, …

    � Ereignismodell

    • Grundlegendes

    • semantische und systemnahe Ereignisse

    • Patterns für die Ereignisbehandlung

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 3����������������������������

    ���������������������������

    Inhalt (Fortsetzung)

    � Menus und Actions

    � GUI Elemente

    • MVC-Paradigma

    - Abstrakte Modelle

    - Ereignisse

    • Überblick über GUI Elemente

    - JLabel

    - JButton

    - JSpinner

    - JTextField

    - JFormattedTextField

    - …

    � Dialoge (Teil 2)

    • Modale und Nicht-modale Dialoge

    • Spezielle Dialoge: JFileDialog, JOptionsPane, …

    � Spezielle GUI-Elemente (Teil 2)

    • JList

    • JTable

    • JTree

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 4����������������������������

    ���������������������������

    Graphische Oberflächen

    AWT und Swing

    Grundlegender Aufbau von Swing GUIs

    Graphikausgabe

    Layoutmanagement

    Ereignismodell

    Menus und Actions

    GUI Elemente

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 5����������������������������

    ���������������������������

    Ereignisse

    � Komponenten lösen Ereignisse aus

    • z.B. Klick auf Button, Auswahl eines Listenelements, Eingabe von Text

    � Ereignisbehandler reagieren auf Ereignis

    • Implementation der entsprechenden Schnittstelle

    • Registration bei Komponente

    � Ereignisobjekt liefert Zusatzinformationen

    • z.B. Quelle, Modifikationstasten, …

    ������������������������ �������������������� �

    �������������������������� ��������

    ����������������� ���������������������������� ������

    � ������������������������ �������������������������������� ������������ ������������������������ ����������� ����������������� ������������������������ ���

    ������������������������� �������������������� ��������� ������������������������ � !���� �"���##������������������������ #�$�����������"���#�����"���#���

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 6����������������������������

    ���������������������������

    Hierarchie der Ereignisklassen

    � Low-Level-Ereignisse: elementaren Nachrichten

    � semantische Ereignisse: höherwertige Ereignisse

    Low-Level-Ereignisse

    semantische Ereignisse

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 7����������������������������

    ���������������������������

    Hierarchie der EventListener-Interfaces

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 8����������������������������

    ���������������������������

    Adapterklassen

    � Implementieren Interface mit leeren Methoden

    � Bequeme Art, nur bestimmte Ereignisse zu behandeln

    WindowAdapter

    ContainerAdapter

    ContainerAdapter

    KeyAdapter

    MouseAdapter

    FocusAdapter

    MouseMotionAdapter

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 9����������������������������

    ���������������������������

    Maus und Tastatur

    � Ereignisse von Maus und Tastatur

    • z.B. Reaktion auf Mausbewegung oder Tastatureingabe

    • Tastenereignisse empfängt nur Komponente mit Fokus

    ������������������������ �������������������������������� $����������� ����������������� ���������%���$�������� ������������������� ������������$�������� ������������������� �����������$�������� ������������������� �������������$�������� ������������������� �����&��������$�������� ���

    ������������������������ �������������������������������� $����$����������� ����������������� �����'��##���$�������� ������������������� �����$�����$�������� ���

    ������������������������ �������������������������������� (�)������� ����������������� %�)��������(�)���� ������������������� %�)&��������(�)���� ������������������� %�)!)����(�)���� ���

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 10����������������������������

    ���������������������������

    Focus-Ereignisse

    ComponentMögliche Ereignisquellen

    addFocusListenerRegistrierungsmethode

    FocusListenerListener-Interface

    FocusEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Eine Komponente verliert den Focus. focusLost

    Eine Komponente erhält den Focus. focusGained

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 11����������������������������

    ���������������������������

    Key-Ereignisse

    ComponentMögliche Ereignisquellen

    addKeyListenerRegistrierungsmethode

    KeyListenerListener-Interface

    KeyEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Eine Taste wurde gedrückt und wieder losgelassen. keyTyped

    Eine Taste wurde losgelassen. keyReleased

    Eine Taste wurde gedrückt. keyPressed

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 12����������������������������

    ���������������������������

    Component-Ereignisse

    ComponentMögliche Ereignisquellen

    addComponentListenerRegistrierungsmethode

    ComponentListenerListener-Interface

    ComponentEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Eine Komponente wurde sichtbar. componentShown

    Die Größe einer Komponente hat sich geändert. componentResized

    Eine Komponente wurde verschoben. componentMoved

    Eine Komponente wurde unsichtbar. componentHidden

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 13����������������������������

    ���������������������������

    Container-Ereignisse

    ContainerMögliche Ereignisquellen

    addContainerListenerRegistrierungsmethode

    ContainerListenerListener-Interface

    ContainerEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Eine Komponente wurde entfernt. componentRemoved

    Eine Komponente wurde hinzugefügt. componentAdded

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 14����������������������������

    ���������������������������

    Window-Ereignisse

    Dialog, FrameMögliche Ereignisquellen

    addWindowListenerRegistrierungsmethode

    WindowListenerListener-Interface

    WindowEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Das Fenster wurde geöffnet. windowOpened

    Das Fenster wurde auf Symbolgröße verkleinert. windowIconified

    Das Fenster wurde wiederhergestellt. windowDeiconified

    Das Fenster wurde deaktiviert. windowDeactivated

    Das Fenster wird geschlossen. windowClosing

    Das Fenster wurde geschlossen. windowClosed

    Das Fenster wurde aktiviert. windowActivated

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 15����������������������������

    ���������������������������

    Action-Ereignisse

    Button, List, MenuItem, TextFieldMögliche Ereignisquellen

    addActionListenerRegistrierungsmethode

    ActionListenerListener-Interface

    ActionEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Eine Aktion wurde ausgelöst. actionPerformed

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 16����������������������������

    ���������������������������

    Adjustment-Ereignisse

    ScrollbarMögliche Ereignisquellen

    addAdjustmentListenerRegistrierungsmethode

    AdjustmentListenerListener-Interface

    AdjustmentEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Der Wert wurde verändert. adjustmentValueChanged

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 17����������������������������

    ���������������������������

    Item-Ereignisse

    Checkbox, Choice, List, CheckboxMenuItemMögliche Ereignisquellen

    addItemListenerRegistrierungsmethode

    ItemListenerListener-Interface

    ItemEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Der Zustand hat sich verändert. itemStateChanged

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 18����������������������������

    ���������������������������

    Text-Ereignisse

    TextField, TextAreaMögliche Ereignisquellen

    addTextListenerRegistrierungsmethode

    TextListenerListener-Interface

    TextEventEreignisklasse

    Klasse, Interface oder Methode Eigenschaft

    Der Text wurde verändert. textValueChanged

    Bedeutung Ereignismethode

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 19����������������������������

    ���������������������������

    Entwurfsmuster für Handler-Code

    � Ein wesentliches Entwurfskriterium ist, wie die Einbindung von Handler in die Applikation erfolgt

    � Dazu gibt es unterschiedliche Ansätze, die wir in Form von Entwurfsmuster besprechen wollen:

    • Variante 1: Implementierung eines EventListener-Interfaces

    • Variante 2: Lokale oder anonyme Klassen

    • Variante 3: Anonyme Klasse plus Handlermethode (siehe JavaBeans-Beispielcode)

    • Variante 4: Trennung von GUI- und Anwendungscode

    • Variante 5: wie Variante 4 plus Datenmodell mit Change-Events

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 20����������������������������

    ���������������������������

    Grundlegende Überlegungen

    � Ereignisse sollen etwas bewirken

    • Ausführung von Code der Applikation

    • Änderungen in den GUI-Elementen

    � Gestaltung von Handler-Code ist durch zwei Herausforderungen getrieben

    • Zugriff auf Applikation und/oder GUI ermöglichen

    • gewisse Übersichtlichkeit und geeignete Strukturierung erreichen

    GUI

    Applikation

    Handler

    auslösen

    einwirken

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 21����������������������������

    ���������������������������

    Grundlegende Architektur

    � In einer interaktiven Architektur braucht man einen Container, der die GUI-Elemente aufnimmt und anordnet

    � Dies ist oft das Top-Level-Fenster, d.h. eine applikationsspezifische Ableitung von *+���� oder *'����#

    � Diese Klasse

    • kennt den Aufbau des GUI

    • hat Verbindung zum Datenmodell/Applikationslogik

    � Ist ������������ zu implementieren wird dies normalerweise in einer Ableitung von *����� implementiert

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 22����������������������������

    ���������������������������

    Beispiel „ Punkte bei Mouse-Clicks“

    � Applikation, in der jeder Mouse-Click als ein Punkt ausgegeben wird

    � ����+����

    • definiert Hauptfenster

    • hält eine Liste von Points (= Applikationsdaten)

    • implementiert ����

    � ���������

    • bekommt auch Verweis auf Liste von Points

    • definiert ������������-Methode in der die Liste von Points gezeichnet werden

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 23����������������������������

    ���������������������������

    Beispiel „ Punkte bei Mouse-Clicks“ : ����+��������+��������+��������+����

    ������������������������ �������������������� ����+���������������������������� *+�����

    ������������������������ ���

    ������

    ������������������������ ����+��������

    �������

    ,��,��,��,��������-������

    ��!����.�����.��

    ,��,��,��,�����������������/��/��/��/ ����������,��,��,��,�����������

    ���%���

    ���

    ������������������������ ���������������� ���������������� �����"���#��#�01��

    ���

    �����-��/��/��/��/ ����)������

    ������������ ��������� �-2��3-24��55�������������/��/��/��/ ������6247�624���

    ����+���������-��/��/��/��/ ����+������������

    �������,�/���

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 24����������������������������

    ���������������������������

    Beispiel „ Punkte bei Mouse-Clicks“ : ������������������������������������

    ������������������������ �������������������� ��������������������������������� *������

    ���

    ������

    ������������������������ �������������

    �������

    ,��,��,��,��������-������

    ���������������������������� ���������������� �������������8���,���#��

    ���9����������9�����-���������9��������

    /,���/,���/,���/,��� ������9������,��:������

    ����

    �-�����������9������������

    #����/;�������7��)7272��

    ���

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 25����������������������������

    ���������������������������

    � GUI-Komponente implementiert Listener und meldet sich bei Komponente an

    � Vorteile:

    • einfach

    � Nachteil:

    • wenn viele unterschiedliche Listener implementiert werden müssen, unhandlich

    Variante 1: Implementierung EventListener-Interfaces

    ������������������������ �������������������� ����+���������������������������� *+���������������������������������������� $������������

    ������������������������ ����+��������

    ����������#����������������$������������,��,��,��,����

    ������������������������ ���������������� ���������%���$��������

    ���������������/��/��/��/ �������#�

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 26����������������������������

    ���������������������������

    Variante 2: Anonyme Klassen

    � Es werden anonyme innere Klassen erzeugt, die Listener implementieren (oder Adapter erweitern)

    � Diese greifen als innere Klassen auf die Objektvariablen zu

    � Vorteile:

    • erlaubt die Implementierung von beliebigen Listenern

    � Nachteil:

    • kann auch unübersichtlich werden, weil alles in eine Klasse gepackt ist

    ������������������������ �������������������� ����+����>������������������������ *+����������������������������� ����+����>����

    ����

    ���#����������������$��������������/��/��/��/ $�������������

    ������������������������ ���������������� ���������%���$��������

    ���������������/��/��/��/ �������#�

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 27����������������������������

    ���������������������������

    Variante 3: Anonyme Klasse plus Handlermethode

    � Wie bei Variante 2 anonyme innere Klassen

    � Diese rufen aber Handler-Methoden der umgebenden Klasse auf

    � entspricht Verfahren, wie viele GUI-Editoren Code erzeugen

    � Vorteile:

    • etwas übersichtlicher

    #����������������$��������������/��/��/��/ $������������������������������������� ���������������� ���������%���$��������

    ���

    ���������%?����������

    ����

    ������������������������ ���������������� ���������%?�������$��������

    ���������������/��/��/��/ �������#�

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 28����������������������������

    ���������������������������

    Variante 4: Trennung von GUI- und Anwendungscode

    � Eigene Klassen, die die Listener implementieren

    � Vorteile:

    • Trennung von GUI-Aufbau und Ereignsbehandlung

    � Nachteile:

    • In dieser Version keine strikte Trennung, weil Aufruf von ������ notwendig

    ������������������������ �������������������� $��������%?������������������������������������������ $������������������������������������ ���

    ������������������������������ $��������%?����������

    �������

    ,��,��,��,��������-�������

    ������������������������ ���������������� ���������%���$��������

    ���������������/��/��/��/ �������#�

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 29����������������������������

    ���������������������������

    Variante 5: Variante 4 + Datenmodell mit Change-Events

    � Eigenes Datenobjekt �������, welche die Änderungen signalisiert

    � ���������@ meldet sich als Listener an und ruft bei Änderungen �������� auf

    ������������������������ �������������������� $��������%?������������������������������������������ $���������������

    ������������������������ ���������������� ���������%���$��������

    ���

    ������������/��/��/��/ �������#�

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 30����������������������������

    ���������������������������

    Variante 5: Variante 3 + Datenmodell mit Change-Events (Forts.)

    � Vorteil:

    • Klare Trennung GUI – Applikation

    ������������������������ �������������������� �������

    ����

    �����-��/��/��/��/ ����)������������)�,��#�"�����

    ��,"��

    -��/��/��/��/ ������)�,��#�"������,��,��,��,����

    ������������������������ ���������������� ��������

    ������������������,"�������������)�,��#��.�����.7����������������7�������

    ������������������������ ���9��������9���������������������������� ���������9��������

    ������������������������ ���������������� ���������)�,��#���������������)�,��#�������������,"������������)�,��#������������

    ������������������������ ���������������� ������������)�,��#���������������)�,��#�������������,"���������������)�,��#������������

    ��

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 31����������������������������

    ���������������������������

    Graphische Oberflächen

    AWT und Swing

    Grundlegender Aufbau von Swing GUIs

    Graphikausgabe

    Layoutmanagement

    Ereignismodell

    Menus und Actions

    GUI Elemente

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 32����������������������������

    ���������������������������

    Menüs mit Swing

    JMenuBarJMenu

    JMenuItem

    JRadioButtonMenuItem

    JCheckBoxMenuItem JMenu

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 33����������������������������

    ���������������������������

    Menüs und Untermenüs

    � Menüleiste

    • Instanz von JMenuBar

    • Setzen mittels ��*$����� des *+����

    � Menü

    • Instanz von JMenu (erweitert JMenuItem)

    • Hinzufügen zu Menüleiste oder Menü mit Methode ���

    • Einfügen einer Trennlinie mit ���"�������

    � Menüeintrag

    • Instanz von JMenuItem

    • Hinzufügen zu Menü mittels ���

    • Kann Symbol und Tastenkürzel besitzen

    • Verfügbare Varianten:

    A *�,��%��$���9��

    A *&�����

    ��$���9��

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 34����������������������������

    ���������������������������

    Eigenschaften eines Menüeintrages

    � Mnemonik

    • Unterstrichener Buchstabe für Tastaturnavigation im Menü

    • Setzen mit ��$�������

    • Konstanten von (�)���� für Tasten verwenden

    � Tastenkombination

    • Erscheint rechts neben Menütext

    B (�)"��%��#�(�)"��%����

    %�)����7��

    ����������

    • Modifizierer: (�)�������!C$�"(7(�)������!&�C$�"(7(�)�����"?9+!C$�"(

    • Setzen mittels ������������

    � Symbol

    • Laden von Datei mittels 9��#�9���-Konstruktor

    • Setzen mit ��9���

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 35����������������������������

    ���������������������������

    Beispiel: Menüs

    DD����������

    �������������-��/*$����������*$��������������

    DD�������������-��/*$����.�$���.���������$��������(�)�����E(C��������������������

    DD������������9��#�9�������-��/���#�9����.���#��D�������#��.������9��-��/*$���9���.�,��

    �������.7����������9�����$��������(�)�����E(C������9����������������(�)"��%��#�(�)"��%��

    (�)�����E(C7(�)������!&�C$�"(�������9�������������������,�����������������9����

    DD�������������������"����������

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 36����������������������������

    ���������������������������

    Actions

    � �����

    • Von ������������ abgeleitet

    A ������������������������

    ��

    • Property: enabled

    - Abfragen und setzen ob diese Action aktiv sein soll

    - Interessierte werden über ein ������)�,��#����� benachrichtigt

    • Mittels getValue(String key) und putValue(String key, Object value) können Eigenschaften der Aktion verwaltet werden.

    - NAME: Name der Aktion

    - MNEMONIC_KEY: Setzen der Mnemonik

    - SHORT_DESCRIPTION: Benutzt für Tooltip etc.

    - LONG_DESCRIPTION: Zum Beispiel für kontextsensitive Hilfe

    - ACCELERATOR_KEY: Tastenkombination

    - SMALL_ICON: Ablegen eines ImageIcons.

    - ...

    � Hilfsklasse um nicht alles implementieren zu müssen: AbstractAction

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 37����������������������������

    ���������������������������

    Beispiel: Actions 1/3

    ������������������������ �������������������� ?��������������������������������������������� ���������

    ������������������������ ?����������8����� #�������������-��/��/��/��/ ?��,$������������-������������������,�������� -��/��/��/��/ ���%��������

    ,��,��,��,���#����� -#������

    ������������������������ ;�F��

    #�E�����"���#%�)���������������������� �������#��%�)���

    ������������������������ ���������������� ��E�����"���#%7;�F��

    �������������%7����

    ������������������������ ���������������� �������������������������������������� ����������� ��G-������������������������������������� ���E��-���������������-������������)�,��#��������/��/��/��/ ����������E���7

    ��/��/��/��/ ������������������

    ���

    ��������������8������������)?�������

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 38����������������������������

    ���������������������������

    Beispiel: Actions 2/3

    ������������������������ �������������������� ?��������������������������������������������� ������

    ������������������������ ���������������������������� �������������������������������� ���������

    ������������������������ ���������������� ���������)�,��#���������������)�,��#����������������,����������������

    ������������������������ ���������������� ������������)�,��#���������������)�,��#�����������

    �����,��������������������

    ������������������������ ���������������� ������������������������

    ����������� �#�����G-������������������#��������)?��������

    ������������������������ ���������������� ����������)�,��#������;�F��

    ���E��7;�F��

    ��/E����

    ����

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 39����������������������������

    ���������������������������

    Beispiel: Actions 3/3

    ������������������������ �������������������� �����'��������������������������� *+���������������������������������������� 8����� ���������������������������� ���������������� ������DD����������,��

    -��/��/��/��/ ?����������,��,��,��,����,�����E�����������:�$�7.?����.��,�����E�����������$:�$;:9�C(�=7

    ��/��/��/��/ 9��#���(�)�����E(C?���,�����E�����������������&�!;&C(�=7

    (�)"��%��#�(�)"��%��(�)�����E(C?7

    (�)������!&�C$�"(���

    ,�����E�����������"$���C9�;:7��/��/��/��/ 9��#�9����."�����#��.���

    ,�����E�����������"?;&!C'�"�&9�!9;:7.�����?�����.�����*$���9��,����$9-��/��/��/��/ *$���9���.?����.����)$��������,����$9��,����$9���������,�������

    ������������������������ ���������������� ��)?����������

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 40����������������������������

    ���������������������������

    Zusammenfassung

    � Applets

    • Kleine Programme innerhalb von Webseiten

    • Eingeschränkte Berechtigungen

    � Anwendungen

    • Hauptfenster und Dialogfenster

    • Pluggable Look and Feel unter Swing

    � Layout-Manager

    • Kontrollieren Position und Größe der Komponenten

    � Ereignisse

    • Klick auf Schaltfläche, Texteingabe, Auswahl eines Listenelements, …

    • Ereignisbehandler werden bei Komponente registriert

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 41����������������������������

    ���������������������������

    Literatur

    � The JavaTM Tutor, Creating a GUI with JFC/Swing (The Swing Tutorial), http://java.sun.com/docs/books/tutorial/uiswing/

    � Horstmann, Cornell, Core Java 2, Band 1 - Grundlagen, Markt und Technik, 2002:

    Kapitel 7 - 11

    � Krüger, Handbuch der Java-Programmierung, 3. Auflage, Addison-Wesley, 2003,

    http://www.javabuch.de, Kapitel 23, 24, 28, 29, 30, 35, 36

  • Pratikum SWE 2 © M. Löberbauer, T. Kotzmann, H. Prähofer 42����������������������������

    ���������������������������

    Programmbeispiele

    � Programmbeispiele zu den Entwurfsmuster für Handler-Code:

    � Download von Homepage der LVA

    � Handbuch der Java-Programmierung: �����#>H42�F���, �����#>H4>�F���, �����#>H4I�F���, �����#>H4J�F���, �����#>H4@�F���, �����#>H4K�F���