VIS- und Uni-Logo
Blindenversion home uni uni suche suche sitemap sitemap kontakt kontakt
unilogo Universität Stuttgart
Institut für Visualisierung und Interaktive Systeme

Graphische Benutzungsoberfl"achen (Blatt 11)

englische VersionDruckversionBlindenversion
 

Graphische Benutzungsoberfl"achen (Blatt 11) Betreuer: Martin Kraus, Klaus Engel, Norbert Frisch, Sabine Iserhardt-Bauer


figure110

Grundlagen der interaktiven Systeme (Blatt 11)

Aufgabe 11.1 [3 Punkte] Benutzungsoberflächen

Apple hat kürzlich den neuen ,,Look``, der Aqua genannt wird, seines Betriebssystems MacOS X vorgestellt. Unter http://www.apple.com/macosx/aqua.html finden Sie einige Informationen dazu. Listen Sie zunächst stichpunktartig auf, was sich bezüglich Icons, Fenstern und Dialogenboxen geändert hat. Die Änderungen der Oberfläche sind zum Teil Reaktionen auf Weiterentwicklungen der Hardware und des eigentlichen Betriebssystems. Versuchen Sie für die dargestellten Änderungen solche Gründe zu finden.

Aufgabe 11.2 [4 Punkte] Einfache Dialoge

Die Swing-Klasse JOptionPane (Dokumentation unter http://web2.java.sun.com/ products//jdk/1.2/docs/api/javax/swing/JOptionPane.html) bietet die Möglichkeit einfache Dialoge zu erzeugen. Hier ein Beispiel:

import javax.swing.*;

public class DialogDemo extends JFrame
{
   public static void main(String args[])
   {
      Object[] knoepfe = {"Eins", "Zwei", "Drei", "Vier"};
      int auswahl;
      
      auswahl = JOptionPane.showOptionDialog(null, 
          "Bitte waehlen", "Auswahl", JOptionPane.YES_NO_OPTION,
          JOptionPane.INFORMATION_MESSAGE, null,
          knoepfe, knoepfe[0]);			
              
      System.out.println(auswahl);
   }
}
Neben der Methode showOptionDialog ist auch die Methode showInputDialog(null,''Nachricht'') interessant, die einen vom Benutzer eingegebenen String zurückgibt.
  • Ersetzen Sie in dem Programm die Methode showOptionDialog durch showInputDialog und senden Sie das Programm an gis-uebungen@informatik.uni-stuttgart.de unter dem Subject GIS-Uebungen 11.
  • Welche der in der Vorlesung besprochenen Interaktionstechniken werden von diesen Methoden jeweils benutzt?
  • Welche Interaktionsaufgaben und -stile können mit diesen Methoden jeweils implementiert werden?
  • Es gibt ein Ungleichgewicht zwischen der Anzahl der möglichen Interaktionsaufgaben und -stile; welche Gefahr könnte sich daraus ergeben?

Aufgabe 11.3 [3 Punkte] Fenster-Events

Um in Java Fenster-Events abzufangen, muss ein Objekt der Klasse WindowListener definiert werden. WindowListener ist aber eine abstrakte Klasse, von der keine Objekte erzeugt werden können, deshalb muss zunächst eine Klasse von WindowListener abgeleitet werden, in der alle abstrakten Methoden implementiert werden. Das folgende Beispiel implementiert nicht alle abstrakten Methoden von WindowListener, deswegen wird ein Java-Compiler zu jeder noch nicht implementierten abstrakten Methode eine Fehlermeldung erzeugen.

  • Ergänzen Sie das Beispiel ausgehend von diesen Fehlermeldungen.
  • Analog zu Aufgabe 10.3 kann auch die WindowEventDemo-Klasse selbst die Klasse WindowListener implementieren, so dass auf die Klasse myWindowListener verzichtet werden kann. Ändern Sie das Programm entsprechend und schicken Sie die beiden Programme an die E-mail-Adresse gis-uebungen@informatik.uni-stuttgart.de mit dem Subject GIS-Uebungen 11.
  • Welche Fenster-Events werden beim Schließen, Ikonifizieren und Deikonifiziern erzeugt? Können Sie zwei Deaktivierungs-Events ohne Aktivierungs-Event dazwischen erzeugen?

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

public class WindowEventDemo extends JFrame
{
   public static void main(String args[])
   {
      WindowEventDemo w = new WindowEventDemo();
      w.pack();
      w.setVisible(true);
   }
   public WindowEventDemo()
   {
      addWindowListener(new myWindowListener());
   }   
   public Dimension getPreferredSize()
   {
      return new Dimension(300, 200);
   }   
}
class myWindowListener implements WindowListener
{
   public void windowActivated(WindowEvent e)
   {
      System.out.println("Window activated.");
   }   
   public void windowClosed(WindowEvent e)
   {
      System.out.println("Window closed.");
      e.getWindow().dispose();
      System.exit(0);
   }
   public void windowClosing(WindowEvent e)
   {
      System.out.println("Window closing.");
      e.getWindow().dispose();
   }
   /* weitere Methoden */
}

Abgabe: Mittwoch, 26. 1. 2000, vor der Vorlesung


Martin Kraus
Wed Jan 19 16:26:22 MEZ 2000