Einbindung der Tastatur



Ähnliche Dokumente
Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Erstellen der Barcode-Etiketten:

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Einführung in die Programmierung

2. Die ersten Schritte mit Windows 7 einfach bewältigen

Zwischenablage (Bilder, Texte,...)

V o r w o r t. A n l e i t u n g

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Hinweise zum Übungsblatt Formatierung von Text:

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Jederzeit Ordnung halten

Java: Vererbung. Teil 3: super()

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

4.1 Wie bediene ich das Webportal?

Zahlen auf einen Blick

Erklärung zu den Internet-Seiten von

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Produktschulung WinDachJournal

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

etax.schwyz: Suche nach Steuerfalldateien

Um die Patientenverwaltung von Sesam zu nutzen, muss man die Patienten natürlich zuerst in die Kartei eintragen.

Drucken von Webseiten Eine Anleitung, Version 1.0

Lehrer: Einschreibemethoden

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Um eine Person in Magnolia zu erfassen, gehen Sie wie folgt vor:

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Mediator 9 - Lernprogramm

Datei Erweiterungen Anzeigen!

Wie halte ich Ordnung auf meiner Festplatte?

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Objektorientierte Programmierung

Anleitung über den Umgang mit Schildern

Datenbanken Kapitel 2

Microsoft Access 2010 Navigationsformular (Musterlösung)

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Bedienungshinweise für das Smartboard. Basisfunktionen

Legen Sie auf der Festplatte (bspw. in ihrem Homeverzeichnis) einen Ordner Downloads an. Legen Sie in diesem Ordner einen Unterordner IrfanView an.

Programmierkurs Java

Text Formatierung in Excel

Der Kalender im ipad

Windows 7 Arbeiten mit Fenstern

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3

Ihr Ideen- & Projektmanagement-Tool

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Anleitung für die Hausverwaltung

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: Änderungen vorbehalten

PhotoFiltre: Fotokorrektur schnell und einfach

Programme im Griff Was bringt Ihnen dieses Kapitel?

Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Programmieren in Java

Erstellen von x-y-diagrammen in OpenOffice.calc

Webalizer HOWTO. Stand:

Inhaltsverzeichnis Seite

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Anleitung für das Online Update

Betriebssysteme Arbeiten mit dem Windows Explorer

So funktioniert das online-bestellsystem GIMA-direkt

Einführung in TexMaker

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Anleitung zur Erstellung einer Gefährdungsbeurteilung

Stammdatenanlage über den Einrichtungsassistenten

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Tragen Sie bitte im Anmeldefeld die Daten ein, die Sie von uns erhalten haben.

Anleitung zur Verwendung der VVW-Word-Vorlagen

Carolo Knowledge Base

Geld Verdienen im Internet leicht gemacht

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Was muss gesichert werden? -Ihre angelegten Listen und Ihre angelegten Schläge.

Animationen erstellen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Pfötchenhoffung e.v. Tier Manager

Navigieren auf dem Desktop

Bauteilattribute als Sachdaten anzeigen

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Bei der Anlage von Pauschalen ist folgendes zu beachten!!!!!!!!

Abwesenheitsnotiz im Exchange Server 2010

Installation Terminkarten- und Etikettendrucker

Professionelle Seminare im Bereich MS-Office

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

Bedienungsanleitung für den SecureCourier

Installation OMNIKEY 3121 USB

Kreatives Gestalten mit Flash 5.0

Professionelle Seminare im Bereich MS-Office

Nach dem Einstecken des mdentity wird die Anwendung nicht gestartet

Neue Zugangsdaten für sg-online erstellen

Mozilla Firefox - Zeit für den Wechsel

Transkript:

Einbindung der Tastatur Auch die Tastatur kann man wie die Maus zur interaktiven Programmsteuerung verwenden. Bei der Maus ist stets klar, welche grafische Komponente bei einem Klick oder einer Bewegung gemeint ist; es ist die, in der sich der Mauszeiger befindet. Natürlich möchte man, dass ein Tastaturbefehl auch nur eine bestimmte Komponente anspricht. Wenn nämlich ein Tastaturbefehl bei mehreren Fenstern eine Reaktion auslösen kann, so könnten in Fenstern von nicht gemeinten Anwendungen ungewollte Reaktionen ausgelöst werden. So bewirkt die Tastenkombination CONTROL C bei den meisten Programmen den sofortigen Abbruch. Im Allgemeinen will man damit aber nicht alle laufenden Programme stoppen, sondern nur ein bestimmtes. Um das gerade beschriebene Verhalten zu verhindern, gibt es zu jedem Zeitpunkt höchstens eine grafische Komponente, zu der Tastatureingaben weitergeleitet werden. Man sagt diese Komponente habe den Fokus. Hat eine Fenster oder eine seiner Unterkomponenten den Fokus, so erkennt man dies bei fast allen Betriebssystemen an der farblich hervorgehobenen Titelleiste. Hat ein Knopf den Fokus, so erkennt man das je nach Betriebssystem an eine einer anderen Farbe, an einem dickeren Umriss oder einer stärkeren Schattierung. Bei editierbaren Textkomponenten erkennt man an einer blinkenden Einfügemarke (oder am Vorhandensein der Einfügemarke), in welcher bei einem Tastendruck der Text erscheint. Durch Anklicken einer anderen Komponente mit der Maus (Windows) oder beim Hineinbewegen des Mauszeigers (UNIX) verschiebt man den Fokus auf diese. Oft kann man auch mit der Tabulator-Taste den Fokus von einer Komponenten zu nächsten weiter schieben. Einige Swing-Komponenten können den Fokus per Voreinstellung nicht erlangen, weil diese nur sehr selten durch die Tastatur gesteuert werden. Die Entwickler von JAVA wollen damit verhindern, dass beim Weiterschalten mit der Tabulator-Taste der Fokus unnötigerweise auf Komponenten wandert, die im Allgemeinen nicht tastaturgesteuert sind. Zu den Komponenten, die den Fokus per Voreinstellung nicht erlangen können, gehören Label und Panels. Jede grafische Komponente von Swing erbt von der Stammklasse JComponent die Methode public boolean isfocustraversable(). Diese Methode wird zur Laufzeit abgefragt, wenn eine Komponente den Fokus erhalten soll. Liefert sie dann true, so erhält die Komponente den Fokus, liefert sie false so bleibt der Fokus dort, wo er war. Will man das Verhalten einer Komponente bezüglich des Fokus ändern, so leitet man eine Klasse von dieser 1

Komponente ab, und überschreibt dort die Methode isfocustraversable. Das folgende Programmfragment erlaubt, dass die Komponente den Fokus erhält. Um das zu verbieten, ändert man den Rückgabewert auf false. public boolean isfocustraversable() return(true); Um einer Komponente den Fokus zuzuweisen (und ihn damit einer anderen zu entziehen) benutzt man die Methode requestfocus. Diese ist in der Stammklasse JComponent definiert und damit in allen grafischen Komponenten von Swing verfügbar. Um den Fokus auf eine Komponente Komp zu übertragen, benutzt man den Befehl Komp.requestFocus(); Wir wollen nun eine Anwendung entwickeln, die das gerade gesagte verdeutlicht. In einen Rahmen kleben wir ein Panel und eine rollbare Text-Area untereinander ein. Das Panel soll in der Lage, sein Tastatureingaben zu empfangen. Die Text-Area darunter soll die gedrückte Taste anzeigen. Wie oben gesagt, muss das Panel den Fokus haben, um Tastatureingaben erhalten zu können. Dazu legen wir fest, dass das Panel den Fokus hat, wenn sich der Mauszeiger im dem Panel befindet. Ist er außerhalb, so hat die Text-Area den Fokus. Um das gerade beschriebene Verhalten zu implementieren, verwenden wir zwei Aufpasser: einen Mouse-Listener und einen Key-Listener. Beide werden dem Panel zugeordnet. Der Mouse-Listener passt auf den Mauszeiger auf. Sobald dieser in das Panel eintritt, wird übergibt er den Fokus an das Panel, indem er die Methode requestfocus() des Panels aufruft. Verlässt der Mauszeiger das Panel, so übergibt der Listener den Fokus an die Text-Area. Um den Status des Panels optisch zu verdeutlichen, setzt der Listener die Hintergrundfarbe des Panel auf Rot, wenn es den Fokus hat und auf Orange, wenn es den Fokus nicht hat. Wir beschreiben zunächst die Implementierung des Panels. Die Klasse KeyPanel ist von JPanel abgeleitet. In der Definition der Klasse überschreiben wir die Methode isfocustraversable so, dass sie den Wert True zurück gibt. Damit kann ein KeyPanel den Fokus erhalten. Sonst wird gegenüber JPanel nichts geändert. 2

Datei: KeyPanel.java package eis.keytest; import javax.swing.jpanel; import java.awt.color; public class KeyPanel extends JPanel public boolean isfocustraversable()return true; KeyPanel() this.setbackground(color.orange); Die Klasse KeyFrame definiert den Rahmen, in den das Panel und die Text-Area eingeklebt werden. In ihr werden auch die beiden Listener als interne Klassen definiert. Durch die interne Definition können die Listenern auf einfache Weise auf die Subkomponenten und Variablen des Rahmens zugreifen. Wir beschreiben nur den Tastatur-Aufpasser genauer (Key-Listener, engl. key bedeutet Taste ). Dieser ist für das Verarbeiten von Tastenanschlägen zuständig. Das Interface KeyListener verlangt die Implementierung der folgenden Methoden. Jede erhält eine Ereignis vom Typ KeyEventKeyEvent übergeben, dem man Information über die gedrückte Taste entnehmen kann. public void keypressed(keyevent evt) public void keyreleased(keyevent evt) public void keytyped(keyevent evt) keypressed(keyevent evt) wird aufgerufen, wenn eine Taste gedrückt wird. keyreleased(keyevent evt) wird aufgerufen, wenn eine Taste (wirklich) losgelassen wird. keytyped(keyevent evt) wird aufgerufen, wenn eine Taste gedrückt und losgelassen wird. I.A. wird diese Methode vor keyreleased aufgerufen. 3

Das gerade beschriebene Verhalten ist in der Praxis allerdings oft etwas anders. Die meisten Betriebssysteme haben eine Wiederholfunktion, die bei länger gedrückter Taste eine rasche Folge von Anschlägen dieser Taste simuliert. Hält man eine Taste fest so ist die Reihenfolge der Aufrufe (auf einem Windows-System) keypressed - keytyped - keypressed - keytyped - keyreleased Das heißt, keyreleased wir erst beim physikalischen Loslassen der Taste ausgelöst. Dafür wird keytyped auch bei jedem vom Betriebssystem simulierten Anschlag ausgelöst. Um den Key-Listener keylis einer Swing-Komponente Komp zuzuordnen, benutzt man den Befehl Komp.addKeyListener(keyLis) Dem Objekt vom Typ KeyEvent kann man Informationen über die gedrückte Taste entnehmen. Die folgenden Methoden dienen diesem Zweck. char getkeychar(); int getkeychar(); static String getkeytext(int code); static String getkeymodifierstext(int code); getkeychar() liefert das Unicode-Zeichen, das die gedrückte Taste auf dem Bildschirm erscheinen lässt. getkeychar() den ganzzahligen Code, der der gedrückten Taste zugeordnet ist (Tastaturcode). static String getkeytext(int code) liefert eine textuelle Beschreibung, die zu dem Zeichen mit Tastaturcode code gehört. Dies ist bei Nicht- Buchstaben Tasten interessant, zum Beispiel bei der Umschalttaste, die Shift liefert. static String getkeymodifierstext(int code) liefert eine textuelle von Modifikator-Tasten wie Control. Man beachte, dass die beiden letztgenannten Methoden statisch sind. Die Kodierungen richten sich nach Rechnertyp und Betriebssystem. Im Folgenden sind die Listings der Programme KeyFrame und KeyTest angegeben. Das erste Programm definiert den Rahmen und die beiden Listener. Das zweite enthält die Startklasse. Zum Testen bewege man die Maus 4

in das obere Panel und drücke einige Tasten. Unten werden dann die Befehle des Listeners angezeigt angezeigt werden. Dabei muss das Fenster gewählt sein, das heißt die Titelleiste ist hervorgehoben. Ist der Mauszeiger nicht im Panel (und das Fenster gewählt), so hat die Text-Area den Fokus und man kann dort wie gewohnt Text eingeben. In Abbildung 1 ist das Resultat zu sehen. Datei: KeyFrame.java package eis.keytest; import javax.swing.*; import java.awt.*; import java.awt.event.*; import eis.simpleframe.simpleframe; public class KeyFrame extends SimpleFrame private private JTextArea keyprotocol; KeyPanel keypane; KeyFrame() keypane = new KeyPanel(); EisKeyListener eiskeylis = new EisKeyListener(); keypane.addkeylistener(eiskeylis); MausAdapter mdpt = new MausAdapter(); keypane.addmouselistener(mdpt); this.getcontentpane().add(keypane,"center"); this.setsize(600,400); this.setlocation(200,200); keyprotocol = new JTextArea(); keyprotocol.setfont(new Font("Monospaced",Font.PLAIN,12)); JScrollPane scrollpane = new JScrollPane(keyProtocol); scrollpane.setpreferredsize(new Dimension(600,150)); this.getcontentpane().add(scrollpane,"south"); 5

// Interne Klassen //Maus-Aufpasser public class MausAdapter extends MouseAdapter public void mouseentered(mouseevent e) keypane.requestfocus(); keypane.setbackground(color.red); public void mouseexited(mouseevent e) keypane.setbackground(color.orange); keyprotocol.requestfocus(); //interne Klasse //Tastatur-Aufpasser class EisKeyListener implements KeyListener public EisKeyListener() public void keytyped(keyevent evt) char c = evt.getkeychar(); int code = evt.getkeychar(); keyprotocol.append("getippt : Taste="+c+" Code="+code+"\n"); public void keypressed(keyevent evt) char c = evt.getkeychar(); int code = evt.getkeychar(); keyprotocol.append("gedrückt : Taste="+c+" Code="+code+"\n"); 6

public void keyreleased(keyevent evt) char c = evt.getkeychar(); int code = evt.getkeychar(); keyprotocol.append("losgelassen: Taste="+c+" //interne Klasse Code="+code+"\n"); Datei: KeyTest.java package eis.keytest; public class KeyTest public static void main(string[] args) KeyFrame keyfr = new KeyFrame(); keyfr.showit(); 7

Abbildung 1: Ergebins des Programms KeyTest. 8