Moderne Betriebssysteme zeichnen sich dadurch aus, dass meist mehrere Fenster geöffnet sind und außerdem in jedem Fenster noch die vielfältigsten Komponenten, wie Buttons, Eingabefelder, Zeichenflächen etc. existieren.
Davon kann aber immer nur ein Fenster oder gar eine Komponente die Tastatureingaben erhalten. Der sog. Fokus zeigt nun an, welches Fenster den Eingabefokus besitzt.
Überlegen wir daher einmal was passiert, wenn wir unser MiniPaint 2001 laufen lassen. Je nachdem ob wir es über die Entwicklungsumgebung (AppletViewer) oder den Browser betrachten, wird der Eingabefokus zunächst einmal diesem Fenster zugewiesen. Dann drücken wir den Button links, um den Textmodus zu aktivieren. Daher besitzt in diesem Moment die Komponenten btText den Eingabefokus. Sobald wir mit der Maus wieder in das Fenster hineinklicken, bekommt erneut der AppletViewer bzw. der Browser den Eingabefokus.
Damit nun aber unser Canvas auf Tastaturereignisse reagieren kann, müsste er den Eingabefokus besitzen. Daher müssen wir dafür sorgen, dass er den Eingabefokus bekommt. Dazu bietet sich die Methode TextModus() an, in der der Wert modus auf 30 gesetzt wird. Dort fügen wir noch die Zeile:
this.requestFocus();
ein. Klickt man danach z.B. in ein anderes Browserfenster, dann wird der Eingabefokus dorthin verschoben, kehrt man dann in das Browserfenster mit dem Applet zurück und klickt wieder auf die Canvasfläche hat er ihn allerdings wieder.
Weitere Informationen zu FocusEvents finden Sie in Goto Java 2 im Kapitel 19.5.
© Ralph-Erich Hildebrandt, 04. Juni 2014