sorry, here is the attachement ..

herbert



-- 
[EMAIL PROTECTED]
http://www.perce.de
#LyX 1.1 Copyright 1995-1999 Matthias Ettrich and the LyX Team
\lyxformat 2.15
\textclass scrartcl
\begin_preamble
\RequirePackage{boxedminipage}
\RequirePackage{multicol}
\RequirePackage{dsfont}
\usepackage{listings}
\usepackage{verbatim}

%\newcommand{\listing}[1]{\footnotesize \verbatiminput{#1} \normalsize}
%\newenvironment{rahmen}[1]{\begin{center}\begin{boxedminipage}[t]{#1}} 
{\end{boxedminipage}\end{center}}
%\newenvironment{definition}[1]{\begin{rahmen}{16cm} \bf Definition #1: \rm} 
{\end{rahmen}}
%
%\newcounter{lst_counter}
%\newcommand{\lst}[2]{\vspace{0.5cm}\noindent \refstepcounter{lst_counter} \bf Listing 
\arabic{chapter}-\arabic{lst_counter}\hspace{0.2cm}\rm #2\lstinputlisting{#1}\indent}
%\newtheorem{definition}{Definition}[section]
%\newcommand{\tabelle}[2]{\vspace{0.5cm}\noindent \refstepcounter{table} \bf\ Tabelle 
\arabic{chapter}-\arabic{table}\hspace{0.2cm}\rm #2\listing{#1}\indent}
%\newcommand{\exor}{$\mbox{\stackrel{e}{\vee }$}
%\newcommand{\lstzeile}[1]{\vspace{0.1cm}\noindent \tt \small 
#1\normalsize\rm\indent\vspace{0.1cm}}
%\newcommand{\lstwort}[1]{\tt \small #1\normalsize\rm}
%\newenvironment{zitat}{\begin{quotation}\small}{\normalsize\end{quotation}}
\usepackage{rotating}
\end_preamble
\options htb
\language german
\inputencoding latin1
\fontscheme default
\graphics default
\paperfontsize 11
\spacing single 
\papersize a4paper
\paperpackage a4
\use_geometry 1
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default

\layout LaTeX


\backslash 
lstset{basicstyle=
\backslash 
scriptsize,keywordstyle=
\backslash 
bfseries,nonkeywordstyle={},blankstring=true,labelstyle=
\backslash 
tiny,labelstep=1,indent=2em,language=Java}
\layout Title

Grafik unter Java
\layout Author

Herbert Voß
\layout Standard


\latex latex 

\backslash 
footnotetext{
\latex default 
Herbert Voss, Wasgenstrasse 21, D-14129 Berlin
\layout Standard

[EMAIL PROTECTED]
\layout Standard

http://www.perce.de/voss
\latex latex 
}
\layout Standard


\begin_inset LatexCommand \tableofcontents{}

\end_inset 


\layout Section

Einführung
\layout Standard

Mit dem 
\series bold 
A
\series default 
bstract 
\series bold 
W
\series default 
indow 
\series bold 
T
\series default 
oolkit
\begin_inset LatexCommand \index{Abstract Window Toolkit}

\end_inset 


\begin_float footnote 
\layout Standard

Es finden sich auch andere Bezeichnungen, z.B.
 Application Window Tool.
\end_float 
 steht eine riesige Sammlung an möglichen Moduln zur grafischen Darstellung
 unter X-Windows
\begin_inset LatexCommand \index{X-Windows}

\end_inset 

 zur Verfügung.
 Eine ausführliche Beschreibung der Klassen und Methoden erhält man über:
 
\emph on 

\begin_inset LatexCommand \url{http://java.sun.com/products/jdk/1.1/}

\end_inset 


\emph default 
 für das JDK der Versionen 1.0 bis 1.1.8 bzw.
 
\emph on 

\begin_inset LatexCommand \url{http://java.sun.com/jdk/}

\end_inset 


\emph default 
 für die Java-2 Platformen (Versionen ab 1.2).
 Auf der dortigen SUN
\begin_inset LatexCommand \index{SUN}

\end_inset 

-Homepage steht auch das frei verfügbare JDK
\begin_float footnote 
\layout Standard

JDK: Java Development Kit (auch Java Developers Kit)
\end_float 
 
\begin_inset LatexCommand \index{JDK}

\end_inset 

1.1.8 bzw.
 die zur Zeit neueste Version 1.3
\begin_float footnote 
\layout Standard

auch als Java 2 bezeichnet.
\end_float 
 für die unterschiedlichsten Systemplattformen kostenlos zum Download bereit,
 wobei angepasste Linux-Versionen unter 
\begin_inset LatexCommand \url{http://www.blackdown.org}

\end_inset 

 zu bekommen sind
\begin_float footnote 
\layout Standard

SUN bietet im Prinzip nur Solaris und Windows-Versionen an.
\end_float 
.
 Eine Beschreibung der vielfach angewendeteten Swing-Connection findet man
 unter anderem auf 
\begin_inset LatexCommand \url{http://java.sun.com/products/jfc/tsc/index.html}

\end_inset 

 oder in [Deitel].
 Diese erfordert jedoch mindestens ein JDK 2.
 Bei den meisten der gängigen Linux-Distributionen oder den beiliegenden
 Java-CD's diverser Computerbücher und -zeitschriften ist ein JDK ohnehin
 standardmäßig dabei, allerdings selten die neueste Version.
 
\layout Standard

In diesem Artikel soll es primär nicht um die Anwendung des AWT
\begin_inset LatexCommand \index{AWT}

\end_inset 

 gehen, sondern um eine entsprechende Erweiterung.
 Dabei soll die Programmiersprache Java
\begin_inset LatexCommand \index{Java}

\end_inset 

 nicht im Vordergrund stehen, sondern einzelne Algorithmen, wie z.B.
 die Projektion einer 3D-Ebene
\begin_inset LatexCommand \index{3D-Ebene}

\end_inset 

 auf eine 2D-Zeichenfläche
\begin_inset LatexCommand \index{2D-Zeichenfläche}

\end_inset 

.
 Letztlich lassen sich aber alle hier angegebenen Algorithmen auf alle anderen
 Sprachen übertragen.
\layout Section

Eine einfache Anwendung
\layout Standard

Eine einfache Klasse, die das AWT-package
\begin_inset LatexCommand \index{AWT-package}

\end_inset 

 anwendet, lässt sich wie Algorithmus 
\begin_inset LatexCommand \ref{awt0}

\end_inset 

 zeigt, sehr einfach realisieren.
 Noch einfacher ist ein Dialogfenster mit Java-Swing
\begin_inset LatexCommand \index{Swing}

\end_inset 

 (Abb.
\begin_inset LatexCommand \ref{awt0}

\end_inset 

b), denn der Algorithmus besteht faktisch aus einer einzigen Programmzeile
 (Alg.
\begin_inset LatexCommand \ref{p-awt0x}

\end_inset 

).
 
\begin_float fig 
\layout Standard
\align center 

\begin_inset Figure size 198 163
file awt0.ps
subcaption awt0.class
width 1 7.00
flags 9
subfigure

\end_inset 

 
\begin_inset Figure size 142 60
file awt0x.ps
subcaption awt0x - JavaSwing
flags 9
subfigure

\end_inset 


\layout Caption


\begin_inset LatexCommand \label{awt0}

\end_inset 

Eine erste Anwendung
\end_float 
 Das Ergebnis wäre ein leeres Grafikfenster
\begin_inset LatexCommand \index{Grafikfenster}

\end_inset 

 mit dem angegebenen Titel 
\begin_inset Quotes eld
\end_inset 

awt0 - Test
\begin_inset Quotes erd
\end_inset 

 (vgl.
 Abb.
\begin_inset LatexCommand \ref{p-awt0}

\end_inset 

a).
 Exemplarisch sollen kurz die einzelnen Teile des Alogorithmus erklärt werden.
 Mit 
\family typewriter 
\size small 
import
\begin_inset LatexCommand \index{import}

\end_inset 


\family default 
\size default 
 werden die entsprechenden Java-Klassen
\begin_inset LatexCommand \index{Java-Klassen}

\end_inset 

 importiert, hier eben alle notwendigen AWT-Klassen
\begin_inset LatexCommand \index{AWT-Klassen}

\end_inset 

, wobei der Java-Compiler automatisch nur die Klassen auswählt, die benötigt
 werden.
 Zeile 2 definiert den Namen der Klasse 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 sowie die Festlegung, dass mit 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 die Klasse 
\family typewriter 
\size small 
Frame
\begin_inset LatexCommand \index{Frame}

\end_inset 


\family default 
\size default 
 (Klasse des AWT
\begin_inset LatexCommand \index{AWT}

\end_inset 

) 
\begin_float footnote 
\layout Standard

vgl.
 Tab.
\begin_inset LatexCommand \ref{awt-klasse}

\end_inset 


\end_float 
 erweitert werden soll, d.h.
 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 erbt alle Eigenschaften von 
\family typewriter 
\size small 
Frame
\family default 
\size default 
, welche wiederum eine Erweiterung der Klasse 
\family typewriter 
\size small 
Window
\begin_inset LatexCommand \index{Window}

\end_inset 


\begin_float footnote 
\layout Standard


\family typewriter 
\size footnotesize 
Window
\family default 
\size default 
 stellt lediglich das Fenster zur Verfügung, ohne Rahmen und Menüleiste
 und ist selbst eine Erweiterung der Klasse 
\family typewriter 
\size footnotesize 
Container
\family default 
\size default 
 (siehe Abb.
\begin_inset LatexCommand \ref{awt-klasse}

\end_inset 

)
\end_float 
 ist.
 Den Aufbau der AWT-Klassenhierarchie
\begin_inset LatexCommand \index{AWT-Klassenhierarchie}

\end_inset 

 zeigt Tab.
\begin_inset LatexCommand \ref{awt-klasse}

\end_inset 

.
\begin_float tab 
\layout Standard
\align center \LyXTable
multicol5
5 5 0 0 -1 -1 -1 -1
1 1 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 1 0 0
8 1 0 "" ""
8 1 0 "" ""
8 1 1 "" ""
8 0 1 "" ""
8 0 1 "" ""
1 8 1 1 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
1 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
1 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""

Object
\begin_inset LatexCommand \index{Object}

\end_inset 

 
\newline 
Component
\begin_inset LatexCommand \index{Component}

\end_inset 

 
\newline 
Container
\begin_inset LatexCommand \index{Container}

\end_inset 

 
\newline 
Button
\begin_inset LatexCommand \index{Button}

\end_inset 


\newline 
Label
\begin_inset LatexCommand \index{Label}

\end_inset 


\newline 
Scrollbar
\begin_inset LatexCommand \index{Scrollbar}

\end_inset 


\newline 
Window
\begin_inset LatexCommand \index{Window}

\end_inset 


\newline 
Panel
\begin_inset LatexCommand \index{Panel}

\end_inset 


\newline 

\newline 

\newline 

\newline 
Frame
\begin_inset LatexCommand \index{Frame}

\end_inset 


\newline 
Applet
\begin_inset LatexCommand \index{Applet}

\end_inset 


\newline 

\newline 

\newline 

\layout Caption


\begin_inset LatexCommand \label{awt-klasse}

\end_inset 

AWT-Klassenhierarchie
\end_float 
 
\layout Standard

Jede Java-Application
\begin_inset LatexCommand \index{Java-Application}

\end_inset 

 
\series bold 
muss
\series default 
 zwingend eine Methode 
\family typewriter 
\size small 
main
\family default 
\size default 
 (Zeilen 3-10) enthalten, da der Algorithmus sonst nicht gestartet werden
 kann
\begin_float footnote 
\layout Standard

Bei Applets ist dies die Methode 
\family typewriter 
init()
\family default 
, vergleiche auch Kap.
 
\begin_inset LatexCommand \ref{Applet}

\end_inset 


\end_float 
:
\layout LaTeX


\backslash 
begin{tabbing}
\backslash 
hspace{3cm}
\backslash 
=
\backslash 

\backslash 

\layout Standard


\family typewriter 
\size small 
main:
\begin_inset LatexCommand \index{main}

\end_inset 


\family default 
\size default 
 
\latex latex 

\backslash 
>
\latex default 
ist die Startmethode für jede Java- Applikation;
\latex latex 

\backslash 

\backslash 

\layout Standard


\family typewriter 
\size small 
public:
\begin_inset LatexCommand \index{public}

\end_inset 


\family default 
\size default 
 
\latex latex 

\backslash 
>
\family typewriter 
\size small 
\latex default 
main
\family default 
\size default 
 muss öffentlich sein,d.h.
 außerhalb des Packages verfügbar; 
\latex latex 

\backslash 

\backslash 

\layout Standard


\family typewriter 
\size small 
static:
\begin_inset LatexCommand \index{static}

\end_inset 


\family default 
\size default 
 
\latex latex 

\backslash 
>
\family typewriter 
\size small 
\latex default 
main
\family default 
\size default 
 ist eine Klassenmethode (und damit der aufrufenden Programm-Klasse 
\latex latex 

\backslash 

\backslash 

\backslash 
>
\family typewriter 
\size small 
\latex default 
public class programm
\family default 
\size default 
 verfügbar - es wird keine Instanz der Programmklasse 
\latex latex 

\backslash 

\backslash 

\backslash 
>
\latex default 
erzeugt);
\latex latex 

\backslash 

\backslash 

\layout Standard


\family typewriter 
\size small 
void:
\begin_inset LatexCommand \index{void}

\end_inset 


\family default 
\size default 
 
\latex latex 

\backslash 
>
\latex default 
main hat keinen Rückgabewert;
\latex latex 

\backslash 

\backslash 

\layout Standard


\family typewriter 
\size small 
String
\protected_separator 
args[];
\family default 
\size default 
 
\latex latex 

\backslash 
>
\latex default 
Array der Klasse 
\family typewriter 
\size small 
String
\family default 
\size default 
 als Eingabeparameterfeld (statt 
\family typewriter 
\size small 
args
\family default 
\size default 
 darf ein beliebig 
\latex latex 

\backslash 

\backslash 

\backslash 
>
\latex default 
anderer zulässiger Bezeichner verwendet werden).
\layout LaTeX


\backslash 
end{tabbing}
\layout Standard

Die Methode 
\family typewriter 
\size small 
main
\begin_inset LatexCommand \index{main}

\end_inset 


\family default 
\size default 
 definiert das neue Objekt 
\family typewriter 
\size small 
app
\family default 
\size default 
 vom Typ 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 (Zeile 5), welches durch die Methode 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 (Zeilen 11-14) realisiert wird.
 Mit den Zeilen 6 und 7 werden zum einen die Fenstergröße festgelegt und
 zum anderen veranlasst, dass das Fenster angezeigt wird.
 Wird 
\family typewriter 
\size small 
app.setVisible
\begin_inset LatexCommand \index{setVisible}

\end_inset 

(false)
\family default 
\size default 
 aufgerufen, so wird nichts angezeigt.
 Wird dieser Methodenaufruf ganz entfernt, wird das Programm sofort wieder
 beendet, denn es gibt für den Algorithmus nichts weiter zu tun.
 Die Methode 
\family typewriter 
\size small 
addWindowListener
\begin_inset LatexCommand \index{addWindowListener}

\end_inset 

()
\family default 
\size default 
 (Zeilen 8-9) überwacht Ereignisse, die im Zusammenhang mit dem Fenster
 
\family typewriter 
\size small 
app
\family default 
\size default 
 stehen und verlässt den Algorithmus, falls das Fenster geschlossen wurde.
 Die 
\family typewriter 
\size small 
System.out.println
\family default 
\size default 

\begin_inset LatexCommand \index{System.out.println}

\end_inset 

-Aufrufe haben hier nur den Sinn, um auf der x-Konsole den Ablauf des Algorithmu
s besser verfolgen zu können:
\layout Standard


\family typewriter 
\size small 
voss@maria:~/Informatik/Java/AWT-Einfuehrung > java awt0 
\layout Standard


\family typewriter 
\size small 
awt0::main() 
\layout Standard


\family typewriter 
\size small 
awt0::awt0(String frameTitle) 
\layout Standard


\family typewriter 
\size small 
awt0::WindowEvent 
\layout Standard


\family typewriter 
\size small 
voss@maria:~/Informatik/Java/AWT-Einfuehrung >
\layout Standard

Nach dem Start der Application
\begin_inset LatexCommand \index{Application}

\end_inset 

 
\family typewriter 
\size small 
awt0
\family default 
\size default 
 wird erwartungsgemäß zuerst die Methode 
\family typewriter 
\size small 
main()
\family default 
\size default 
 ausgeführt, gefolgt von der Instanzierung
\begin_inset LatexCommand \index{Instanzierung}

\end_inset 

 des Objects 
\family typewriter 
\size small 
awt0(String frameTitle)
\family default 
\size default 
.
 Erst wenn jetzt das Fenster geschlossen wird gibt es eine entsprechende
 Meldung.

\family typewriter 
\size small 
 awt0.class
\family default 
\size default 
 hat bislang nichts weiter als ein leeres Fenster erzeugt.
 Erst mit den kommenden Klassen wird eine einfache grafische Anwendung,
 das Zeichnen einer Normalparabel
\begin_inset LatexCommand \index{Normalparabel}

\end_inset 

, durchgeführt (vgl.
 Abb.
 
\begin_inset LatexCommand \ref{awt2}

\end_inset 

a).
 Dazu werden weitere Methoden definiert: 
\layout Itemize


\family typewriter 
\size small 
void MeineAnwendung(Graphics g)
\family default 
\size default 
: Berechnet bzw.
 bestimmt die zu setzenden Bildpunkte, indem die Methode 
\family typewriter 
\size small 
putPixel()
\family default 
\size default 
 aufgerufen wird;
\layout Itemize


\family typewriter 
\size small 
void setzePixel
\begin_inset LatexCommand \index{setzePixel}

\end_inset 

(int x,int y,graphics g)
\family default 
\size default 
: Setzt für die Bildschirmkoordinaten 
\begin_inset Formula \( P(x;y) \)
\end_inset 

 den Bildpunkt in der aktuellen Farbe, wobei dies über die Methode 
\family typewriter 
\size small 
drawLine
\begin_inset LatexCommand \index{drawLine}

\end_inset 

()
\family default 
\size default 
 erfolgen muss, da Java keine eigene Methode zum Setzen von Pixeln kennt;
\layout Itemize


\family typewriter 
\size small 
public void paint
\begin_inset LatexCommand \index{paint}

\end_inset 

(Graphics g)
\family default 
\size default 
: Diese Methode wird vom System automatisch aufgerufen und muss daher zwingend
 vorhanden sein, wenn eine graphische Ausagbe erfolgen soll.
 Übergeben wird dabei das ebenfalls automatisch erzeugte Grafikobject 
\family typewriter 
\size small 
g
\family default 
\size default 
.
\layout Standard

\begin_float fig 
\layout Standard
\align center 

\begin_inset Figure size 141 141
file awt2.ps
subcaption Ausgabe bei systemspezifischer Ausrichtung
width 1 5.00
flags 9
subfigure

\end_inset 

 
\begin_inset Figure size 141 141
file awt2a.ps
subcaption Ausgabe mit mathematischer Ausrichtung
width 1 5.00
flags 9
subfigure

\end_inset 

 
\begin_inset Figure size 141 143
file awt2b.ps
subcaption Berücksichtigung der Randleiste 
width 1 5.00
flags 9
subfigure

\end_inset 


\layout Caption


\begin_inset LatexCommand \label{awt2}

\end_inset 

Ausgabe des Graphen einer Parabel
\end_float 
\layout Subsection

void MeineAnwendung(Graphics g)
\layout Standard

Ein Bildpunkt
\begin_inset LatexCommand \index{Bildpunkt}

\end_inset 

 entspricht in x-Richtung der mathematischen Einheit, in y-Richtung jedoch
 nur 
\begin_inset Formula \( \frac{1}{100} \)
\end_inset 

 der mathematischen Einheit, so dass es sich um die Normalparabel 
\begin_inset Formula \( y=x^{2} \)
\end_inset 

 handelt, wenn dies entsprechend berücksichtigt wird.
\layout Subsection

void setzePixel
\begin_inset LatexCommand \index{setzePixel}

\end_inset 

(int x,int y,Graphics g)
\layout Standard

Wie bereits oben erwähnt kennt die Java Graphics-Klasse keine eigene Methode
 für das Setzen eines Pixels, so dass dies mithilfe der Methode 
\family typewriter 
\size small 
drawLine()
\family default 
\size default 
 erfolgen muss.
\layout Subsection

public void paint
\begin_inset LatexCommand \index{paint}

\end_inset 

(Graphics g)
\layout Standard

Die Methode 
\family typewriter 
\size small 
paint(Graphics g)
\family default 
\size default 
\emph on 
 
\emph default 
braucht vom Anwender nicht aufgerufen zu werden, da dies systemspezifisch
 automatisch erfolgt.
 Damit ist es dem System möglich, Fensterinhalte immer wieder neu aufzubauen,
 wenn man unter X-Windows das aktuelle Fenster verläßt oder sogar auf eine
 Textconsole umschaltet.
 Auf der x-Konsole kann dies durch entsprechende 
\family typewriter 
\size small 
System.out.println()
\family default 
\size default 
 - Anweisungen verfolgt werden (Zeile 19).
 Zeile 20 legt durch 
\family typewriter 
\size small 
translate
\begin_inset LatexCommand \index{translate}

\end_inset 

(200,0)
\family default 
\size default 
 fest, dass der Koordinatenursprung nicht bei 
\begin_inset Formula \( P(0;0) \)
\end_inset 

 liegt, sondern bei 
\begin_inset Formula \( P_{Neu}(200;0) \)
\end_inset 

.
 Hierbei läßt Java ohne weiteres negative Koordinaten zu.
 Kann also ein Punkt nicht gezeichnet werden, führt dies zu keiner Fehlermeldung
! Auch die 
\family typewriter 
\size small 
translate()
\family default 
\size default 
-Methode kann den Koordinatenursprung
\begin_inset LatexCommand \index{Koordinatenursprung}

\end_inset 

 beliebig setzen, also auch ausserhalb des Bildschirms.
 Mit Zeile 21 wird der Fensterhintergrund festgelegt und mit Zeile 22 die
 Anwendung gestartet.
 
\layout Section


\begin_inset LatexCommand \label{Applet}

\end_inset 

Applikation
\begin_inset LatexCommand \index{Applikation}

\end_inset 

 und/oder Applet
\begin_inset LatexCommand \index{Applet}

\end_inset 


\layout Standard

Der Unterschied zwischen diesen beiden Arten der Javaprogrammierung ist
 minimal, denn beides sind Javaprogramme und können denselben Algorithmus
 als Grundlage haben.
 Unterschiedlich ist lediglich die Umgebung in der sie ablaufen, Applets
 laufen nur in einer Browser
\begin_inset LatexCommand \index{Browser}

\end_inset 

-Umgebung bzw.
 Appletviewer
\begin_inset LatexCommand \index{Appletviewer}

\end_inset 

-Umgebung und Applikationen in einer 
\begin_inset Quotes eld
\end_inset 

normalen
\begin_inset Quotes erd
\end_inset 

 Umgebung, d.h.
 Textkonsole bzw.
 Grafikkonsole, wenn grafische Operationen erfolgen.
 Grundsätzlich ist es auch kein Problem eine Java-Klasse so zu programmieren,
 dass diese sowohl als Applet als auch Applikation laufen kann.
 Einschränkungen gibt es nur hinsichtlich der MEthoden, die aus Sicherheitsgründ
en in einem Applet nicht erlaubt sind.
 Der 
\family typewriter 
\size small 
main
\family default 
\size default 
-Methode entspricht die 
\family typewriter 
\size small 
init
\family default 
\size default 
-Methode beim Applet (Alg.
\begin_inset LatexCommand \ref{p-awt0A}

\end_inset 

) .
 Die entsprechende Ausgabe im Browser zeigt Abb.
\begin_inset LatexCommand \ref{awt0A.ps}

\end_inset 

, die zugehörige einfache html-Datei zeigt Alg.
\begin_inset LatexCommand \ref{awtoA.html}

\end_inset 

.
\layout Standard

\begin_float fig 
\layout Standard
\align center 

\begin_inset Figure size 200 163
file applet0.ps
flags 9

\end_inset 


\layout Caption


\begin_inset LatexCommand \label{awt0A.ps}

\end_inset 

Applet awt0.html
\end_float 
 
\layout Section

Anpassung der Darstellung
\layout Subsection


\begin_inset LatexCommand \label{3.1}

\end_inset 

Bildschirmauflösungen
\begin_inset LatexCommand \index{Bildschirmauflösungen}

\end_inset 


\layout Standard

Bei Linien, die nicht vertikal oder horizontal verlaufen, ist in der Regel
 mit Verzerrungen
\begin_inset LatexCommand \index{Verzerrungen}

\end_inset 

 zu rechnen, denn das Bildschirmverhältnis von xPixel zu yPixel ist nicht
 notwendigerweise immer gleich 1.
 Dieses von Pascal bekannte Verhältnis 
\series bold 
xy-Ratio
\begin_inset LatexCommand \index{xy-Ratio}

\end_inset 


\series default 
 beträgt für eine typische 1280*1024-Auflösung 
\begin_inset Formula \( \frac{1280}{1024}=1,25 \)
\end_inset 

, während ein 17
\begin_inset Quotes erd
\end_inset 

-Bildschirm für das sogenannte 
\emph on 
Display Area
\begin_inset LatexCommand \index{Display Area}

\end_inset 


\emph default 
 ein typisches Längenverhältnis von 
\begin_inset Formula \( \frac{30cm}{22,5cm}=1,\overline{3} \)
\end_inset 

 aufweist.
 Somit 
\series bold 
muss
\series default 
 es bei bestimmten Auflösungen zwangsweise zu Verzerrungen kommen, denn
 wie die folgende Tab.
\begin_inset LatexCommand \ref{xy-ratio}

\end_inset 

 zeigt, haben nicht alle Bildschirmauflösungen das gleiche Pixelverhältnis
\begin_inset LatexCommand \index{Pixelverhältnis}

\end_inset 

.
 Immer dann, wenn die Grafik ausgedruckt werden muss, erledigt sich dieses
 Problem von selbst, denn Drucker verfügen fast ausnahmslos über ein xy-Verhältn
is von 1:1, z.B.
 ein Laserdrucker
\begin_inset LatexCommand \index{Laserdrucker}

\end_inset 

 von typisch 300*300 bzw.
 600*600 Punkten.
\begin_float tab 
\layout Standard
\align center \LyXTable
multicol5
8 3 0 0 -1 -1 -1 -1
1 1 0 0
1 1 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0
1 1 0 0
8 1 0 "" ""
8 1 0 "" ""
8 1 1 "" ""
1 8 1 0 0 0 0 "" ""
2 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 1 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""
0 8 1 0 0 0 0 "" ""

Auflösung
\newline 
Verhältnis
\newline 
Breite
\newline 
Höhe
\newline 

\newline 
640
\newline 
480
\newline 

\begin_inset Formula \( 1,\overline{3} \)
\end_inset 


\newline 
800
\newline 
600
\newline 

\begin_inset Formula \( 1,\overline{3} \)
\end_inset 


\newline 
1024
\newline 
768
\newline 

\begin_inset Formula \( 1,\overline{3} \)
\end_inset 


\newline 
1152
\newline 
870
\newline 

\begin_inset Formula \( 1,32 \)
\end_inset 


\newline 
1280
\newline 
1024
\newline 

\begin_inset Formula \( 1,25 \)
\end_inset 


\newline 
1600
\newline 
1200
\newline 

\begin_inset Formula \( 1,\overline{3} \)
\end_inset 


\layout Caption


\begin_inset LatexCommand \label{xy-ratio}

\end_inset 

 Bildschirmverhältnisse
\begin_inset LatexCommand \index{Bildschirmverhältnisse}

\end_inset 

 (Auflösung in Pixeln)
\end_float 
\layout Subsection


\begin_inset LatexCommand \label{Kap3.1}

\end_inset 

Die Bildschirmausrichtung
\begin_inset LatexCommand \index{Bildschirmausrichtung}

\end_inset 


\layout Standard

Aus der Abb.
\begin_inset LatexCommand \ref{awt2}

\end_inset 

a ist unschwer zu erkennen, dass der Koorinatenursprung
\begin_inset LatexCommand \index{Koorinatenursprung}

\end_inset 

 des Bildschirms in der oberen linken Ecke liegt und durch 
\family typewriter 
\size small 
translate
\begin_inset LatexCommand \index{translate}

\end_inset 

()
\family default 
\size default 
 nur verschoben, aber nicht gespiegelt werden kann, wie dies aber notwendig
 wäre, um den Koordinatenursprung allgemein in die l
\layout Bibliography
\bibitem {1}

Geary, D.M.
 und McClellan, A.L.: Graphic Java - Das AWT beherrschen,Verlag Heinz Heise,
 Hannover 1997
\the_end

Reply via email to