Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java-Insel | vor >>
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom Programmieren mit der Java Standard Edition Version 6
Java ist auch eine Insel (8. Aufl.) 8., aktual. Auflage, geb., mit DVD 1.475 S., 49,90 Euro Galileo Computing ISBN 978-3-8362-1371-4 |
| 16 Grafische Oberflächen mit Swing
|  | 16.1 Das Abstract Window Toolkit und Swing
|  |  | 16.1.1 SwingSet-Demos
|  |  | 16.1.2 Abstract Window Toolkit (AWT)
|  |  | 16.1.3 Java Foundation Classes
|  |  | 16.1.4 Was Swing von AWT unterscheidet
|  |  | 16.1.5 Die Klasse Toolkit
|  | 16.2 Fenster unter grafischen Oberflächen
|  |  | 16.2.1 Swing-Fenster darstellen
|  |  | 16.2.2 Fenster schließbar machen – setDefaultCloseOperation()
|  |  | 16.2.3 AWT-Fenster darstellen
|  |  | 16.2.4 Sichtbarkeit des Fensters
|  |  | 16.2.5 Größe und Position des Fensters verändern
|  |  | 16.2.6 Unterklassen der Fenster-Klassen bilden
|  |  | 16.2.7 Fenster- und Dialog-Dekoration, Transparenz
|  |  | 16.2.8 Dynamisches Layout während einer Größenänderung
|  | 16.3 Beschriftungen (JLabel)
|  |  | 16.3.1 Mehrzeiliger Text, HTML in der Darstellung
|  | 16.4 Icon und ImageIcon für Bilder auf Swing-Komponenten
|  | 16.5 Es tut sich was – Ereignisse beim AWT
|  |  | 16.5.1 Die Klasse AWTEvent
|  |  | 16.5.2 Events auf verschiedenen Ebenen
|  |  | 16.5.3 Swings Ereignisquellen und Horcher (Listener)
|  |  | 16.5.4 Listener implementieren
|  |  | 16.5.5 Listener bei dem Ereignisauslöser anmelden/abmelden
|  |  | 16.5.6 Aufrufen der Listener im AWT-Event-Thread
|  |  | 16.5.7 Adapterklassen nutzen
|  |  | 16.5.8 Innere Mitgliedsklassen und innere anonyme Klassen
|  | 16.6 Schaltflächen
|  |  | 16.6.1 Normale Schaltflächen (JButton)
|  |  | 16.6.2 Der aufmerksame ActionListener
|  |  | 16.6.3 Basisklasse AbstractButton
|  |  | 16.6.4 Wechselknopf (JToggleButton)
|  | 16.7 Swing Action
|  | 16.8 JComponent und Component als Basis aller Komponenten
|  |  | 16.8.1 Tooltips
|  |  | 16.8.2 Rahmen (Border)
|  |  | 16.8.3 Fokus und Navigation
|  |  | 16.8.4 Ereignisse jeder Komponente
|  |  | 16.8.5 Die Größe und Position einer Komponente
|  |  | 16.8.6 Komponenten-Ereignisse
|  |  | 16.8.7 Hinzufügen von Komponenten
|  |  | 16.8.8 UI-Delegate – der wahre Zeichner
|  |  | 16.8.9 Undurchsichtige (opake) Komponente
|  |  | 16.8.10 Properties und Listener für Änderungen
|  | 16.9 Container
|  |  | 16.9.1 Standardcontainer (JPanel)
|  |  | 16.9.2 Bereich mit automatischen Rollbalken (JScrollPane)
|  |  | 16.9.3 Reiter (JTabbedPane)
|  |  | 16.9.4 Teilungs-Komponente (JSplitPane)
|  | 16.10 Alles Auslegungssache: die Layoutmanager
|  |  | 16.10.1 Übersicht über Layoutmanager
|  |  | 16.10.2 Zuweisen eines Layoutmanagers
|  |  | 16.10.3 Im Fluss mit FlowLayout
|  |  | 16.10.4 Mit BorderLayout in allen Himmelsrichtungen
|  |  | 16.10.5 Rasteranordnung mit GridLayout
|  |  | 16.10.6 Der GridBagLayout-Manager
|  |  | 16.10.7 Null-Layout
|  |  | 16.10.8 BoxLayout
|  |  | 16.10.9 Weitere Layoutmanager
|  | 16.11 Rollbalken und Schieberegler
|  |  | 16.11.1 Schieberegler (JSlider)
|  |  | 16.11.2 Rollbalken (JScrollBar)
|  | 16.12 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen
|  |  | 16.12.1 Kontrollfelder (JCheckBox)
|  |  | 16.12.2 ItemSelectable, ItemListener und das ItemEvent
|  |  | 16.12.3 Sich gegenseitig ausschließende Optionen (JRadioButton)
|  | 16.13 Fortschritte bei Operationen überwachen
|  |  | 16.13.1 Fortschrittsbalken (JProgressBar)
|  |  | 16.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)
|  | 16.14 Menüs und Symbolleisten
|  |  | 16.14.1 Die Menüleisten und die Einträge
|  |  | 16.14.2 Menüeinträge definieren
|  |  | 16.14.3 Einträge durch Action-Objekte beschreiben
|  |  | 16.14.4 Mit der Tastatur: Mnemonics und Shortcut
|  |  | 16.14.5 Der Tastatur-Shortcut (Accelerator)
|  |  | 16.14.6 Tastenkürzel (Mnemonics)
|  |  | 16.14.7 Symbolleisten alias Toolbars
|  |  | 16.14.8 Popup-Menüs
|  |  | 16.14.9 System-Tray nutzen
|  | 16.15 Das Model-View-Controller-Konzept
|  | 16.16 Auswahlmenüs, Listen und Spinner
|  |  | 16.16.1 Auswahlmenü (JComboBox)
|  |  | 16.16.2 Zuordnung einer Taste mit einem Eintrag
|  |  | 16.16.3 Datumsauswahl
|  |  | 16.16.4 Listen (JList)
|  |  | 16.16.5 Drehfeld (JSpinner)
|  | 16.17 Texteingabefelder
|  |  | 16.17.1 Text in einer Eingabezeile
|  |  | 16.17.2 Die Oberklasse der Text-Komponenten (JTextComponent)
|  |  | 16.17.3 Geschützte Eingaben (JPasswordField)
|  |  | 16.17.4 Validierende Eingabefelder (JFormattedTextField)
|  |  | 16.17.5 Einfache mehrzeilige Textfelder (JTextArea)
|  |  | 16.17.6 Editor-Klasse (JEditorPane)
|  | 16.18 Tabellen (JTable)
|  |  | 16.18.1 Ein eigenes Tabellen-Model
|  |  | 16.18.2 Basisklasse für eigene Modelle (AbstractTableModel)
|  |  | 16.18.3 Vorgefertigtes Standard-Modell (DefaultTableModel)
|  |  | 16.18.4 Ein eigener Renderer für Tabellen
|  |  | 16.18.5 Zell-Editoren
|  |  | 16.18.6 Größe und Umrandung der Zellen
|  |  | 16.18.7 Spalteninformationen
|  |  | 16.18.8 Tabellenkopf von Swing-Tabellen
|  |  | 16.18.9 Selektionen einer Tabelle
|  |  | 16.18.10 Automatisches Sortieren und Filtern mit RowSorter
|  | 16.19 Bäume (JTree)
|  |  | 16.19.1 JTree und sein TreeModel und TreeNode
|  |  | 16.19.2 Selektionen bemerken
|  |  | 16.19.3 Das TreeModel von JTree
|  | 16.20 JRootPane und JDesktopPane
|  |  | 16.20.1 Wurzelkomponente der Top-Level-Komponenten (JRootPane)
|  |  | 16.20.2 JDesktopPane und die Kinder JInternalFrame
|  | 16.21 Dialoge und Window-Objekte
|  |  | 16.21.1 JWindow und JDialog
|  |  | 16.21.2 Modal oder nicht-modal
|  |  | 16.21.3 Standarddialoge mit JOptionPane
|  |  | 16.21.4 Der Dateiauswahldialog
|  | 16.22 Flexibles Java-Look-and-Feel
|  |  | 16.22.1 Look and Feel global setzen
|  |  | 16.22.2 UIManager
|  |  | 16.22.3 Windowsoptik mit JGoodies Looks verbessern
|  | 16.23 Die Zwischenablage (Clipboard)
|  |  | 16.23.1 Clipboard-Objekte
|  |  | 16.23.2 Auf den Inhalt zugreifen mit Transferable
|  |  | 16.23.3 DataFlavor ist das Format der Daten in der Zwischenablage
|  |  | 16.23.4 Einfügungen in der Zwischenablage erkennen
|  |  | 16.23.5 Drag
|  | 16.24 Undo durchführen
|  | 16.25 AWT, Swing und die Threads
|  |  | 16.25.1 Ereignisschlange (EventQueue) und AWT-Event-Thread
|  |  | 16.25.2 Swing ist nicht Thread-sicher
|  |  | 16.25.3 invokeLater() und invokeAndWait()
|  |  | 16.25.4 SwingWorker
|  |  | 16.25.5 Eigene Ereignisse in die Queue setzen
|  |  | 16.25.6 Auf alle Ereignisse hören
|  | 16.26 Barrierefreiheit mit der Java Accessibility API
|  | 16.27 Zeitliches Ausführen mit dem javax.swing.Timer
|  | 16.28 Alternativen zu AWT und Swing
|  |  | 16.28.1 XML-Beschreibungen der Oberfläche: Swixml, XUL/Luxor
|  |  | 16.28.2 SWT (Standard Widget Toolkit)
|  | 16.29 Zum Weiterlesen
## 16.21 Dialoge und Window-Objekte Seit den ersten Swing-Tagen besitzt Swing Standard-Dialoge wie einen Dateiauswahl-, Druck- oder Farbauswahldialog, aber auch viele interessante Dialoge sind als quelloffene Komponenten verfügbar. Dazu zählen etwa ein Dialog zur Auswahl von Zeichensätzen oder Verzeichnissen (etwa bei http://common.l2fprod.com/) oder Wizards (http://xito.sourceforge.net/projects/dialog/index.php). ### 16.21.1 JWindow und JDialog Ein JFrame ist ein Fenster, das standardmäßig eine Dekoration besitzt. Ein java.awt.Window hat diese Dekoration nicht, sodass sich diese Fläche als Willkommensbildschirm oder als komplette Zeichenfläche nutzen lässt. javax.swing.JWindow ist die Swing-Unterklasse von Window. Die folgende Tabelle gibt die Unterschiede zwischen Fenster, Window und Dialog an:
Eigenschaft | Fenster | Window | Dialog
modal | nein | nein | möglich
größenveränderbar | ja | nein | ja
Titel | ja | nein | ja
Rahmen | ja | nein | ja
Menü | ja | nein | unüblich, bei JDialog aber möglich
Symbol-Icon | ja | nein | mit Hack [((Frame) dialog.getOwner()).setIconImage(image);] ja
### 16.21.2 Modal oder nicht-modal Bildet eine Java-Applikation zwei Fenster, so kann der Anwender zwischen beiden Fenstern hin- und herschalten. Es ist nicht möglich, ein Fenster aufzubauen und dort Eingaben zu erzwingen, während das andere Fenster gesperrt ist. Dafür gibt es in Java spezielle Fenster, die Dialoge, die Swing mit javax.swing.JDialog angeht. JDialog ist eine Unterklasse von der AWT-Klasse Dialog, und Dialog ist wiederum eine Spezialisierung von Window. Ist ein Dialog im Zustand modal, muss erst der Dialog beendet werden, damit es in einem anderen Fenster weitergehen kann – alle Benutzereingaben an andere Fenster der Java-Anwendung sind so lange gesperrt. Sind mehrere Fenster gleichzeitig offen und können sie Eingaben annehmen, nennt sich dieser Zustand nicht-modal. Soll der Dialog modal sein, sind ein übergeordnetes Fenster und ein Wahrheitswert true für den Modalitätstyp einzusetzen.
    JDialog d = new JDialog( owner, true );
    ...
    d.setVisible( true );
    // Hier geht’s erst nach dem Schließen des Dialogs weiter.
Der owner kann ein anderer Dialog, ein Frame oder ein Window sein. Da bei modalen Dialogen alle Eingaben zu anderen Fenstern blockiert sind, nehmen erst nach dem Schließen des Dialogs andere Fenster die Eingaben wieder an. ### 16.21.3 Standarddialoge mit JOptionPane Die Klasse JOptionPane erlaubt einfache Meldedialoge, Eingabedialoge, Bestätigungsdialoge und Optionsdialoge mit nur einem statischen Funktionsaufruf der Art showXXXDialog(). Einige Beispiele: Listing 16.65 com/tutego/insel/ui/dialog/JOptionPaneDialogDemo.java, main()
    // Dialog for a simple message

    JOptionPane.showMessageDialog( null, "Wir Kinder aus dem Möwenweg" );

    // Dialog for a user input

    JOptionPane.showInputDialog( "Bitte Zahl eingeben" );

    // Dialog to confirm a choice

    JOptionPane.showConfirmDialog( null, "Alles OK?" );

    // Dialog with different choices

    String[] genderOptions = {
      "männlich", "weiblich", "keine Ahnung", "ändert sich ständig" };

    String gender = (String) JOptionPane.showInputDialog( null,
              "Geschlecht",
              "Bitte das Geschlecht wählen (eigenes, nicht gewünschtes)",
              JOptionPane.QUESTION_MESSAGE,
              null, genderOptions,
              genderOptions[1] );

    System.out.println( gender );

    // Customized option dialog

    String[] yesNoOptions = { "Ja", "Nein", "Abbrechen" };

    int n = JOptionPane.showOptionDialog( null,
              "Ja oder Nein?",               // question
              "Ja/Nein/Abbrechen",           // title
              JOptionPane.YES_NO_CANCEL_OPTION,
              JOptionPane.QUESTION_MESSAGE,  // icon
              null, yesNoOptions,yesNoOptions[0] );

    if ( n == JOptionPane.YES_OPTION )
      System.out.println("Ja gewählt");

    System.exit( 0 );
Einige Funktionen erwarten als erstes Argument eine Vater-Komponente, die null sein kann. Sie dient zur relativen Ausrichtung des Dialogs und verknüpft den Dialog derart mit einem Fenster, dass, wenn das Fenster versteckt wird, auch der Dialog verschwindet. Die Funktion showConfirmDialog() ist sehr flexibel, denn sie erlaubt die Angabe für Icon, Überschrift, Fragetext und Beschriftung der Schaltflächen. Bei den Funktionen showMessageDialog(), showConfirmDialog() und showOptionDialog() zeigt eine Rückgabe an, was der Benutzer gewählt hat. Mögliche Rückgaben sind Ganzzahlen, die die Konstanten YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION oder CLOSED_OPTION benennen. Die drei Funktionen und showInputDialog() erlauben zusätzlich die Angabe eines Nachrichtentyps; mögliche Konstanten sind ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE und PLAIN_MESSAGE. Sie bestimmen im Allgemeinen ein Standard-Icon. Selten gibt es die Notwendigkeit, nicht die statischen Funktionen showXXXDialog() einzusetzen. Erforderlich kann ein Exemplar der Klasse JOptionPane aber dann sein, wenn zum Beispiel beim Klick auf das × vom Dialog-Fenster der Dialog nicht verschwinden soll oder wenn zum Beispiel gewisse Werte im Textfeld bei showInputDialog() nicht erwünscht sind, wie Folgen von Leerzeichen. Grundsätzlich sieht der Aufbau eines eigenen Dialogs dann so aus:
    JOptionPane pane = new JOptionPane( ... );
    JDialog dialog = new JDialog();
    dialog.setContentPane( pane );
oder:
    JOptionPane pane = new JOptionPane( ... );
    JDialog dialog = pane.createDialog( parent, title );
### 16.21.4 Der Dateiauswahldialog Die Klasse JFileChooser (unter AWT heißt die Klasse FileDialog) simuliert einen betriebssystemabhängigen Dialog zur Auswahl von Dateien und Verzeichnissen. Der Selektor ist modal und kann für das Speichern und Öffnen konfiguriert sein. Zudem lassen sich die Pfade und ein javax.swing.filechooser.FileFilter zur Auswahl spezieller Dateien setzen. Erst nach dem Schließen und Beenden mit dem OK-Button stehen ausgewählte Dateien zur Verfügung.
Beispiel Einen Dateiauswahldialog auf den Schirm bringen:
    JFileChooser fc = new JFileChooser();
    int state = fc.showOpenDialog( null );
Die gewählte Datei erfragt getSelectedFile(), und die Rückgabe ist JFileChooser. APPROVE_OPTION, JFileChooser.CANCEL_OPTION oder JFileChooser.ERROR_OPTION.
#### Vollständiges Programm für eine Auswahlbox Wir können direkt aus dem Hauptprogramm ein Objekt JFrame erzeugen und dann einen Dateiauswahldialog öffnen. Zusätzlich wollen wir ihm einen Filter mitgeben, der alle Dateien mit der Endung .txt aussondert. Zudem soll unser Filter alle Verzeichnisse zulassen. Die Realisierung des Filterns erfolgt durch die Implementierung der Schnittstelle FileFilter. Obwohl wir eine Schnittstelle unter diesem Namen schon kennen, handelt es sich nicht um diejenige aus dem java.io-Paket, sondern um eine Schnittstelle aus dem Paket javax. swing.filechooser. Die die Schnittstelle FileFilter implementierenden Klassen müssen eine accept()-Methode realisieren und eine Methode getDescription(), die eine Zeichenkette liefert. Listing 16.66 com/tutego/insel/ui/dialog/JFileChooserDemo.java
    package com.tutego.insel.ui.dialog;

    import java.io.File;
    import javax.swing.*;
    import javax.swing.filechooser.FileFilter;

    public class JFileChooserDemo
    {
      public static void main( String[] args )
      {
        JFileChooser fc = new JFileChooser();

        fc.setFileFilter( new FileFilter()
        {
          @Override public boolean accept( File f )
          {
            return f.isDirectory() ||
              f.getName().toLowerCase().endsWith( ".txt" );
          }
          @Override public String getDescription()
          {
            return "Texte";
          }
        } );

        int state = fc.showOpenDialog( null );

        if ( state == JFileChooser.APPROVE_OPTION )
        {
          File file = fc.getSelectedFile();
          System.out.println( file.getName() );
        }
        else
          System.out.println( "Auswahl abgebrochen" );

        System.exit( 0 );
      }
    }
Hier klicken, um das Bild zu vergrößern Abbildung 16.21 Der Dateiauswahldialog
Tipp Im Speichern-Dialog ist ein Standardname anzugeben. Im Idealfall richtet er sich nach dem Inhalt der Datei. Dazu bietet die Klasse JFileChooser die Methode setSelectedFile().
    c.setSelectedFile( new File("c:/test.txt") );
    class javax.swing.JFileChooser
    extends JComponent
    implements Accessible
Zum Erzeugen eines Auswahldialogs steht eine Reihe von Konstruktoren zur Auswahl: JFileChooser() Erzeugt einen Dateidialog ohne Titel zum Öffnen einer Datei. Zeigt auf das Benutzerverzeichnis. JFileChooser( File currentDirectory ) Wie JFileChooser(), aber zeigt beim Start auf das Verzeichnis currentDirectory. JFileChooser( String currentDirectoryPath ) Wie JFileChooser( new File(currentDirectoryPath) ). String getDirectory() Liefert das Dialogverzeichnis. File getSelectedFile() Liefert die ausgewählte Datei. File[] getSelectedFiles() Liefert alle ausgewählten Dateien, wenn der Dateiauswahldialog Mehrfachselektion zulässt. void setDialogTitle( String dialogTitle ) Setzt einen neuen Fenstertitel. void setDialogType( int dialogType ) Handelt es sich um einen Laden-/Speichern-Dialog oder um einen angepassten Dialog? Deklarierte Konstanten sind JFileChooser.OPEN_DIALOG, JFileChooser.SAVE_DIALOG und JFileChooser.CUSTOM_DIALOG. void setFileFilter( javax.swing.filechooser.FileFilter filter ) Setzt einen FileFilter zur Anzeige der gewünschten Dateien. void setFileHidingEnabled( boolean b ) Bestimmt, ob verborgene Dateien angezeigt werden sollen. void setFileView( FileView fileView ) Standardmäßig zeigt der Dialog neben dem Dateinamen ein kleines Bild an. Das lässt sich mit einem einen FileView-Objekt anpassen. void setAccessory( JComponent newAccessory ) Setzt eine Komponente für eine mögliche Vorschau.
Hinweis Sollen im Dialog nur Verzeichnisse, aber keine Dateien auftauchen, so lässt sich dies mit setFileSelectionMode() und einem passenden Argument einstellen.
    fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
Insgesamt sind drei Konstanten deklariert: FILES_ONLY, DIRECTORIES_ONLY und FILES_AND_ DIRECTORIES. Der Name verrät schon die Bedeutung.
Ein konkreter Filter implementiert die Schnittstelle javax.swing.filechooser.FileFilter.
    abstract class javax.swing.filechooser.FileFilter
abstract boolean accept( File f ) Akzeptiert der FileFilter die Datei oder nicht? abstract String getDescription() Liefert eine Beschreibung für den Filter. #### Vorschaubilder Die Methode setAccessory() kann eine JComponent für die Vorschau zuweisen, die immer dann aktualisiert wird, wenn der Benutzer im Dialog eine Datei auswählt. Eine Auswahl meldet dabei ein PropertyChangeEvent, das ein Listener abfängt und testet, ob es JFileChooser.SELECTED_FILE_CHANGED_PROPERTY war. Um das Vorgehen kurz zu skizzieren, folgende Ereignisbehandlung:
    public void propertyChange( PropertyChangeEvent e )
    {
      if ( JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(e.getPropertyName()) )
      {
        File f = (File) e.getNewValue();
        // File f laden, etwa mit ImageIcon, dann anzeigen.
      }
    }
### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java ist auch eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Tipp
| Coding for Fun
Buchempfehlungen
| Objektorientierte Programmierung
| Einstieg in Eclipse 3.4
| Java 6 lernen mit Eclipse
| NetBeans Platform 6
| Java und XML
| Visual C# 2008
| IT-Handbuch für Fachinformatiker
| C++ von A bis Z
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de