Entwicklung von E-Learning Komponenten zur Computergrafik

Größe: px
Ab Seite anzeigen:

Download "Entwicklung von E-Learning Komponenten zur Computergrafik"

Transkript

1 F Entwicklung von E-Learning Komponenten zur Computergrafik Development of E-learning components for computer graphics Markus Stollenwerk, Rainer Friesen und Daniel Valentin Master Projektstudium Betreuer: Prof. Dr. Ing. Fritz Nikolai Rudolph Trier,

2 Kurzfassung Ziel dieses Tutorials ist es die grundlegenden Techniken der Computergrafik zu erklären. Dazu werden zunächst die Grundlagen der Programmiersprachen Java und C# erklärt. Diese Grundlagen befassen sich mit dem Erstellen von grafischen Benutzeroberflächen und der Verwendung von diesen. Ein weiterer Bereich beschäftigt sich mit den verschiedenen Arten von Softwarepatterns bzw. Softwareentwurfsmustern. Hier werden exemplarisch die wichtigsten Entwurfsmuster erläutert. Im letzten Abschnitt wird die Verwendung der Java2D Umgebung erklärt. Dies beinhaltet die grundliegende Möglichkeit zu Zeichnen und diese Zeichnungen zu manipulieren. Des Weiteren wird auf die Verwendung von Schriften und Transparenz eingegangen.

3 Inhaltsverzeichnis 1 Einleitung Grundlagen Java Fenster und grafische Oberflächen Erstellen eines JFrames Hinzufügen von grafischen Elementen Anordnen von Objekten mit Layouts Verwenden von Listenern Erstellen von Menüleisten Applets GUI Elemente Buttons Textelemente Slider ComboBox Menüs Listen Bäume weitere GUI Elemente Grundlagen C# Erstellung eines Projekts in Visual Studio Verweise Fenster und GUI-Elemente Beispiel 1 - ein einfaches Fenster in C# Beispiel 2 - Buttons und EventHandler Beispiel 3 - Labels Beispiel 4 - Maus-Events Beispiel 5 - Web-Browser Beispiel 6 - Menü- und Statusbars Beispiel 7 - ComboBox Beispiel 8 - MDI Beispiel 9 - Radiobuttons und Checkboxen

4 Inhaltsverzeichnis IV Beispiel 10 - TreeView Grundlagen Patterns Observer Pattern MVC Pattern Singleton Pattern State Pattern Factory Pattern Grundlagen Java 2D Zeichnen Zeichnen vor Java2D Zeichnen mit Java2D Translation, Rotation und Skalierung Fonts Transparenz D-Grafik in C# Einführung D-Grafik in C# Initialisierung des Grafikkontexts Beispiel 1 - Die erste 2D-Grafik Beispiel 2 - Ellipsen und Rechtecke Beispiel 3 - Brushes Beispiel 4 - Polygone Beispiel 5 - GraphicsPath Beispiel 6 - Transformationen Einführung Splines Splines 1 - Hermite-Splines Splines 2 - Bézier-Splines Splines 3 - Cardinal Splines Fonts in C# Bitmaps in C# Literatur

5 Abbildungsverzeichnis 2.1 JFrames stellen die Fenster in Java dar JFrame, bei welchem die Größe mit pack automatisch angepasst wird Der zweite JButton überschreibt den ersten JButton im JFrame Ein FlowLayout ordnet die JLabels nebeneinander an Ein GridLayout ordnet die JLabels wie in einem Gitter an Ein BorderLayout ordnet die JPanels so an, dass ein Zentrum und ein Rand entstehen Verwendung eines BoxLayouts zur Erstellung eines Login-Bildschirms Mit einem GridBagLayout kann man komplexere grafische Oberflächen erstellen Das CardLayout ist das einzige Layout in Java, welches Interaktionen des Benutzers zulässt Eine Menüleiste, wie sie in fast jedem Programm vorkommt Hello World Applet in einem Webbrowser Anzeige der verschiedenen Meilensteine Ansicht eines Frames aus einem JApplet Ansicht der verschiedenen Buttons SicherePassworteingabe Slider und ComboBox Menüs und Listen Ein Baum Neues Projekt Verweise Beispielprogramm frames Anwendung Frames Anwendung Frames Anwendung Frames Anwendung Frames Menüaufbau Anwendung Frames Anwendung Frames

6 Abbildungsverzeichnis VI 3.11 Anwendung Frames TreeView Anwendung Frames Observer-Pattern Model-View-Control-Pattern Singleton-Pattern State-Pattern Automatenmodell eines Toröffners Ausgabe des Programms Draw Ausgabe des Programms Draw Transition des Rechtecks Ausgabe des Programms Font Ausgabe des Programms Transparency Neue Windows Form Beispielprogramm Beispielprogramm Beispielprogramm Beispiel GraphicsPath Rotation eines GraphicsPath Bezier-Kurve Hermite-Kurve Bezierkurve Auswirkung des Tensionwerts Cardinal Splines Fonts in C# Bitmaps in C#

7 1 Einleitung Ziel dieser Ausarbeitung ist es, einen Einblick in die Verwendung der Computergrafik zu geben. In der heutigen Zeit gibt es immer mehr Anwendungsgebiete für die Computergrafik. Angefangen bei der computerunterstützten Designarbeit über die Spiele-Industrie bis hin zu der Entwicklung von Grafiken für Bilder und Filme. Bei all diesen Aufgaben werden die Grundlagen der Computergrafik benötigt. Um zu diesen komplexen Themengebieten einen Einstieg zu finden werden zunächst die grundlegenden Funktionen der Programmiersprachen Java und C# erläutert. Im ersten Kapitel Grundlagen Java werden die ersten Schritte bei der Programmierung einer grafischen Benutzeroberfläche mit Java beschrieben. Dazu gehört als erstes das Erstellen eines Fensters mit Hilfe eines JFrames, das Hinzufügen von grafischen Elementen und Anordnen mit Hilfe von LayoutManagern, sowie die Verwendung von Listenern und Menülistenern. Der zweite Schritt beim Umgang mit Java ist die Verwendung von Applets. Dazu gehören der allgemeine Aufbau eines Applets und die Einbindung in eine Webseite. Der dritte Abschnitt befasst sich mit den verschiedenen, in Java verfügbaren, GUI-Elementen. Hier werden die Funktionsweise und die Verwendung beschrieben. Bei den GUI-Elementen handelt es sich um die verschiedenen Arten von Buttons, Textbausteinen und anderen grafischen Ein- und Ausgabemöglichkeiten. Das zweite Kapitel Grundlagen C# gibt einen Einblick in den Umgang mit der Programmiersprache C#. Dazu wird zunächst erklärt wie mit Hilfe der Entwicklungsumgebung Visual Studio neue Projekte erstellt werden können. Daran schließt sich eine Einführung in die ersten Schritte beim Umgang mit C# an. Als letzter Abschnitt in diesem Kapitel werden die verschiedenen Fenster und GUI- Elemente erklärt. Dazu zählen neben den Standardelementen, wie Buttons und Labels, auch Besonderheiten wie der Webbrowser. Zusätzlich wird hier der Umgang mit Mausevents sowie Menüs und Statusanzeigen erläutert. Das nächste Kapitel Grundlagen Patterns beschäftigt sich mit den wichtigsten Entwurfsmustern in der Softwareentwicklung. Dazu wird der Aufbau und die Verwendung der Entwurfsmuster Observer, Model-View-Control, Singleton, State

8 1 Einleitung 2 sowie Factory beschrieben. Im letzten Kapitel Grundlagen Java2D wird der Umgang mit der Java2D Umgebung beschrieben. Dazu wird in einem ersten Schritt ein Vergleich zwischen dem Zeichnen vor und nach Java2D gezogen. Im weiteren Verlauf werden die Möglichkeiten bei der Grafikprogrammierung mit Java2D aufgezeigt. Dazu gehört als einer der wichtigsten Punkte die Möglichkeit der Bildmanipulation durch Translation, Rotation und Skalierung. Als Abschluss wird dann noch auf die Verwendung von Schriften eingegangen und das Konzept der Transparenz erläutert.

9 2 Grundlagen Java 2.1 Fenster und grafische Oberflächen Im folgenden Abschnitt wird gezeigt, wie man mit Java eigene Fenster erstellt und komplette grafische Benutzeroberflächen aufbaut. Dazu gehört die Erzeugung von Buttons, Listen etc. und das Einfügen dieser Objekte in ein Fenster, sowie die Verwendung von Listenern, zum Abfangen von Benutzereingaben. Dazu werden die Java-Packages javax.swing und java.awt verwendet. Es ist also in jedem Beispiel nötig diese Packages oder zumindest Teile davon zu importieren, da diese die wichtigsten Elemente einer grafischen Oberfläche zur Verfügung stellen. Um weitere Informationen und Hilfe zu erhalten, ist es sehr hilfreich einen Blick in das Java Swing Tutorial [SUNb] zu werfen Erstellen eines JFrames In der Abbildung 2.1 sieht man ein JFrame, aus dem Package javax.swing. Dieses JFrame stellt ein Fenster dar, wie es üblicherweise in den heutigen Betriebssystemen verwendet wird um grafische Oberflächen zu erzeugen. Abbildung 2.1. JFrames stellen die Fenster in Java dar

10 2.1 Fenster und grafische Oberflächen 4 Ein solches JFrame zu Erstellen ist ziemlich simpel. Man erstellt einfach ein Objekt der Klasse JFrame und führt die passenden Methoden zum Konfigurieren des JFrames aus. Zuerst sollte man eine Klasse mit beliebigem Namen und einer Main-Methode erstellen. Zusätzlich muss man noch die Klasse JFrame importieren, welche sich in dem Package javax.swing befindet. Als nächstes sollte man dann das JFrame-Objekt erstellen und konfigurieren. Dies geschieht mit dem folgenden Quellcode. public static void main ( S t r i n g [ ] args ){ JFrame frm = new JFrame ( ) ; frm. s e t T i t l e ( JFrame mit s e t S i z e ( ) ) ; frm. s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; frm. s e t S i z e ( 3 0 0, ) ; frm. s e t L o c a t i o n ( 5 0, 5 0 ) ; frm. s e t V i s i b l e ( true ) ; Hier wird ein JFrame-Objekt erstellt und danach dessen Titel eingestellt. Der Titel ist der Text der in der oberen Fensterleiste erscheint. Der Methode setdefaultcloseoperation wird dann noch die Konstante JFrame.EXIT ON CLOSE übergeben. Diese sorgt dafür, dass das komplette Programm beendet wird, wenn man das Fenster schließt. Es gibt unterschiedliche Konstanten, welche verwendet werden können um verschiedene Effekte beim Schließen eines Fensters zu erzeugen. JFrame.DO NOTHING ON CLOSE Beim Schließen passiert einfach nichts. JFrame.EXIT ON CLOSE Beendet das Programm, wenn man dieses Fenster schließt. JFrame.HIDE ON CLOSE (Standard bei JFrame und JDialog) Versteckt das Fenster anstatt es zu schließen. JFrame.DISPOSE ON CLOSE (Standard bei JInternalFrame) Verwirft das Fenster komplett und entfernt es aus dem Speicher. Nachdem nun die defaultcloseoperation festgelegt wurde stellen wir noch die Größe und die Position des Fensters mit den Methoden setsize() und setlocation() ein. Der Methode setsize() kann man entweder zwei int-werte für Breite und Höhe übergeben oder ein Dimension-Objekt. Die Methode setlocation() erhält als Parameter zwei int-werte oder ein Objekt der Klasse Point.

11 2.1 Fenster und grafische Oberflächen 5 Zu guter Letzt wird das Fenster dann noch angezeigt. Dies geschieht mit dem Aufruf setvisible(true). Der Beispielquellcode für dieses Beispiel kann auch noch einmal in der Datei FrameCreator01.java gefunden werden. Wenn er kompiliert und gestartet wird, wird das Fenster aus der Abbildung 2.1 erzeugt. Man sieht also, dass man mit minimalem Aufwand ein Fenster erstellen kann. In diesem Fall wurde jedoch nur ein sehr einfaches JFrame erstellt und dieses mit den dazugehörigen Methoden verändert. Üblicherweise erzeugt man jedoch eine eigene Fensterklasse, von welcher man dann auch mehrere Instanzen erstellen kann. Dazu schreibt man eine neue Klasse, welche von der Klasse JFrame erbt und passt dann in dieser Klasse, beispielsweise im Konstruktor, die jeweiligen Einstellungen an. Das ganze sieht dann folgendermaßen aus. import javax. swing. JFrame ; / E r s t e l l e n e i n e s Fensters mit e i n e r automatischen Groesse / c l a s s MyFrame extends JFrame{ public MyFrame(){ // Einen T i t e l e i n s t e l l e n super ( JFrame mit pack ( ) ) ; / Das JFrame so e i n s t e l l e n, dass das Programm beim S c h l i e ß e n des JFrames beendet wird / s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // Groesse wird automatisch angepasst pack ( ) ; // Die P o s i t i o n e i n s t e l l e n s e t L o c a t i o n ( 5 0, 5 0 ) ; //Das JFrame anzeigen s e t V i s i b l e ( true ) ;

12 2.1 Fenster und grafische Oberflächen 6 public c l a s s FrameCreator02{ public static void main ( S t r i n g [ ] args ){ new MyFrame ( ) ; In diesem Beispiel wird die neue Klasse MyFrame erstellt, welche von JFrame erbt. In ihrem Konstruktor wird der Superkonstruktor, also der Konstruktor der Klasse JFrame, aufgerufen um den Titel einzustellen. Danach werden, wie im vorherigen Beispiel, die Einstellungen für das JFrame vorgenommen, indem die vererbten Methoden verwendet werden. Eine kleine Änderung wurde jedoch noch zusätzlich vorgenommen. Statt der Methode setsize() verwenden wir, in diesem Beispiel die parameterlose Methode pack(), welche eine Methode der Oberklasse Window (java.awt.window) ist, von welcher JFrame erbt. Die Methode pack() passt die Größe des Fensters automatisch so an, dass alle Elemente des JFrames hineinpassen aber trotz allem das Fenster möglichst klein ist. In unserem Beispiel (siehe Abb.2.2), sieht man nur die Titelleiste, da sich kein anderes Element auf dem Fenster befindet. Abbildung 2.2. JFrame, bei welchem die Größe mit pack automatisch angepasst wird. Der Quellcode zu diesem Beispiel befindet sich in der Datei FrameCreator02.java und kann ebenfalls kompiliert und ausgeführt werden Hinzufügen von grafischen Elementen Im vorherigen Abschnitt wurde nun erläutert, wie man ein eigenes Fenster erstellt, in der Größe verändert und anzeigt. In der folgenden Passage wird nun gezeigt wie man ein grafisches Element zu diesem Fenster hinzufügt. Welche verschiedenen grafischen Elemente es in Java gibt wird in einem späteren Abschnitt näher erläutert (Abschnitt 2.3). Jedes JFrame in Java besitzt ein so genanntes ContentPane. Das ContentPane ist ein Container, in welchen man verschiedene grafische Elemente einfügen kann. Zu diesen Elementen gehören Buttons, Textfelder, sowie andere Container, welche wiederum Elemente enthalten können. Um nun auf das ContentPane zugreifen zu können, kann man ganz einfach die Methode getcontentpane, des JFrames verwenden. Das passende ContentPa-

13 2.1 Fenster und grafische Oberflächen 7 ne kann dann dazu verwendet werden um Elemente aufzunehmen, welche auf dem JFrame angezeigt werden sollen. Das Hinzufügen eines Elements wird durch die Methode add(component comp) ausgeführt. Der folgende Quellcode zeigt wie man ein Element erstellt, welches man hinzufügen kann und wie man es dann auch dem ContentPane übergibt. In diesem Beispiel handelt es sich bei dem Objekt um einen JButton, einen Knopf, auf welchen man klicken kann. import java. awt. event. ActionEvent ; import java. awt. event. A c t i o n L i s t e n e r ; import javax. swing. JButton ; import javax. swing. JFrame ; import javax. swing. JOptionPane ; / Hinzufügen e i n e s Buttons in ein JFrame und verwenden e i n e s L i s t e n e r s / class MyButtonFrame extends JFrame implements A c t i o n L i s t e n e r { public MyButtonFrame (){ super ( JFrame mit Button ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; / E r s t e l l e n e i n e s JButtons mit e i n e r B e s c h r i f t u n g / JButton btn = new JButton ( Drück mich ) ; btn. addactionlistener ( this ) ; / Einfügen des Buttons auf das ContentPane d e s JFrames / getcontentpane ( ). add ( btn ) ; pack ( ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ;

14 2.1 Fenster und grafische Oberflächen 8 public void actionperformed ( ActionEvent evt ){ JOptionPane. showmessagedialog ( null, Der Button f u n k t i o n i e r t!, Button f u n k t i o n i e r t, JOptionPane.INFORMATION MESSAGE) ; public c l a s s FrameCreator03 { public static void main ( S t r i n g [ ] args ){ new MyButtonFrame ( ) ; Zuerst wird wieder der Standardkonstruktor von JFrame aufgerufen, um den Titel einzustellen und es wird die DefaultCloseOperation eingerichtet (wie in Abschnitt beschrieben). Daraufhin wird ein neuer JButton erstellt und diesem wird ein ActionListener, welcher in der gleichen Klasse implementiert wurde, übergeben. Nähere Informationen zu Listenern werden im Abschnitt dargestellt. Durch diesen ActionListener wird die Methode actionperformed(actionevent evt) ausgeführt, sobald der Benutzer auf den Knopf drückt und es wird ein JOptionPane angezeigt, welches eine Meldung ausgibt. Nachdem nun der JButton erstellt wurde, wird er noch zu dem Fenster hinzugefügt. Um dies durchzuführen nimmt sich das Programm, mit der Methode getcontentpane(), das Container-Objekt des JFrames und fügt mit der Methode add(btn) den JButton zu dem Fenster hinzu. Danach wird wie bereits erklärt, dass Fenster in der Größe angepasst und angezeigt Anordnen von Objekten mit Layouts Wenn man nicht nur ein einzelnes grafisches Element, sondern gleich mehrere zu einem JFrame hinzufügen möchte, muss man so genannte Layouts verwenden. Layouts sind Strukturen, welche grafische Elemente in einem JFrame oder einer anderen Containerklasse so anordnen, wie man es gerne möchte. Ohne diese Layouts ist es beispielsweise nicht möglich, Buttons o.ä. nebeneinander anzuordnen oder sie in einer anderen Anordnung auf einem JFrame zu verteilen. Würde man beispielsweise den folgenden Quellcode in einem Programm einfügen, würde nur der zuletzt hinzugefügte Button angezeigt werden. Das Programm würde zuerst den ersten Button einfügen und der zweite würde diesen dann überzeichnen (Abb. 2.3).

15 2.1 Fenster und grafische Oberflächen 9 // E r s t e l l e n der JButtons mit e i n e r B e s c h r i f t u n g JButton btn = new JButton ( Drück mich ) ; btn. addactionlistener ( this ) ; JButton btn2 = new JButton ( Button 2 ) ; btn2. addactionlistener ( this ) ; // Einfügen der Buttons auf das ContentPane des JFrames getcontentpane ( ). add ( btn ) ; getcontentpane ( ). add ( btn2 ) ; Abbildung 2.3. Der zweite JButton überschreibt den ersten JButton im JFrame. Um eine möglichst große Vielfalt an verschiedenen grafischen Oberflächen zu ermöglichen gibt es unterschiedliche Arten von Layouts, welche man verwenden und auch kombinieren kann. Die einzelnen Layouts werden in den folgenden Abschnitten näher erläutert und es wird gezeigt, welche Art von Oberflächen man mit welchem Layout erstellen kann. Die Quellcodes der Beispielprogramme, in den folgenden Layoutabschnitten sind in den Dateien FrameCreator4.java bis Frame- Creator9.java enthalten. FlowLayout Das erste Layout, welches hier vorgestellt wird, ist das so genannte FlowLayout. Dieses ermöglicht Objekte nebeneinander zu platzieren. Um das FlowLayout zu verwenden kann man genauso vorgehen, wie in den Kapiteln zuvor beschrieben. Der einzige Unterschied besteht darin, dass man dem Container des JFrames ein FlowLayout zuweist. Dies geschieht über die Methode setlayout(layout) des jeweiligen Containers. Im folgenden Quellcode sieht man eine passende Anwendung, welche zeigt wie man ein Layout einstellt und danach mehrere JLabels zu dem Container hinzufügt. JLabels sind Objekte, welche einen einfachen Text anzeigen können.

16 2.1 Fenster und grafische Oberflächen 10 import java. awt. FlowLayout ; import javax. swing. JFrame ; import javax. swing. JLabel ; / Hinzufügen mehrerer Labels mit H i l f e e i n e s FlowLayouts / c l a s s FlowLayoutFrame extends JFrame{ public FlowLayoutFrame (){ super ( FlowLayout ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // E i n s t e l l e n e i n e s FlowLayouts getcontentpane ( ). setlayout (new FlowLayout ( ) ) ; // Hinzufügen von e i n i g e n JLabels JLabel l b l ; for ( int i =0; i <5; i ++){ l b l = new JLabel ( JLabel + ( i +1)); getcontentpane ( ). add ( l b l ) ; pack ( ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ; public c l a s s FrameCreator04 { public static void main ( S t r i n g [ ] args ){ new FlowLayoutFrame ( ) ; Der gezeigte Quellcode unterscheidet sich nur in wenigen Punkten von dem Quellcode aus dem Abschnitt Zum Einen werden hier keine JButtons, sondern JLabels hinzugefügt und zum Anderen wird hier, wie oben beschrieben, ein Layout mit new FlowLayout() erstellt und dieses dem Container des JFrames übergeben. Dieses Layout regelt dann selbstständig die Anordnung der einzelnen, mit der For-Schleife erstellten, JLabels. Ein passendes Bild, welches solch ein Flow- Layout zeigt, ist die Abbildung 2.4.

17 2.1 Fenster und grafische Oberflächen 11 Abbildung 2.4. Ein FlowLayout ordnet die JLabels nebeneinander an. GridLayout Das GridLayout ist dem FlowLayout sehr ähnlich. Der eigentliche Unterschied besteht darin, dass man sich die Anordnung nicht als Linie vorstellen sollte, wie bei dem FlowLayout, sondern als Gitter. Daher kommt auch der Name des Grid- Layouts. In dem GridLayout können alle Objekte in einer Art Raster oder Gitter angeordnet werden, wobei man die Anzahl der Spalten und Zeilen angeben kann. Dabei muss man nur eine sehr kleine Änderung am Quellcode des FlowLayouts, aus dem Abschnitt 2.1.3, vornehmen. Es wird einfach statt dem FlowLayout ein GridLayout an die Methode setlayout(layout) übergeben. Des Weiteren kann über den Konstruktor des GridLayouts angegeben werden, wieviele Spalten und Zeilen das Raster haben soll. Der erste Wert gibt die Anzahl der Zeilen an und der zweite Wert logischerweise die Anzahl der Spalten. Übergibt man den Wert 0 an den Konstruktor werden endlos viele Spalten bzw. Zeilen verwendet. Der Aufruf der setlayout(layout) Methode sieht dann folgendermaßen aus. getcontentpane ( ). setlayout (new GridLayout ( 2, 3 ) ) ; Ein Screenshot von solch einem GridLayout Beispielprogramm zeigt die Abbildung 2.5. Abbildung 2.5. Ein GridLayout ordnet die JLabels wie in einem Gitter an. BorderLayout Das BorderLayout ist etwas komplexer als die bisher vorgestellten Layouts. Es wird normalerweise nicht dazu verwendet JButtons oder JLabels anzuordnen. Stattdessen fügt man in einen Container, welcher ein BorderLayout verwendet, normalerweise JPanels ein. Ein JPanel ist wiederum ein Container, ähnlich wie das ContentPane eines JFrames. In solch ein JPanel kann man also wiederum JButtons oder JLabels etc. einfügen. Im folgenden Beispielprogramm sieht man wie man ein BorderLayout dazu verwendet um JPanels anzuordnen. Dabei besteht ein BorderLayout immer aus einem Zentrum und vier Rändern. Der Quellcode zeigt wie man einzelne JPanels, in den

18 2.1 Fenster und grafische Oberflächen 12 einzelnen Bereichen anordnet. Dabei wird der zweite Übergabewert der add()- Funktion eines Containers verwendet. An diesen wird eine Konstante übergeben, welche in der Klasse BorderLayout definiert ist und angibt, wo sich ein grafisches Elemente befindet. Es gibt die Konstanten CENTER, NORTH, EAST, SOUTH und WEST. Dabei bedeutet beispielsweise die Konstante NORTH, dass das jeweilige Objekt am nördlichen Rand eingefügt werden soll. import java. awt. BorderLayout ; import java. awt. Color ; import javax. swing. JFrame ; import javax. swing. JLabel ; import javax. swing. JPanel ; / Hinzufügen von JPanels und JLabels und verwenden e i n e s BorderLayout / c l a s s BorderLayoutFrame extends JFrame{ public BorderLayoutFrame (){ super ( BorderLayout ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // E i n s t e l l e n e i n e s BorderLayouts getcontentpane ( ). setlayout (new BorderLayout ( ) ) ; Color [ ] c o l o r s = { Color.RED, Color.BLUE, Color.YELLOW, Color.GREEN, Color.ORANGE ; S t r i n g [ ] s t r i n g s = { Center, Norden, Osten, Süden, Westen ; S t r i n g [ ] p o s i t i o n s = { BorderLayout.CENTER, BorderLayout.NORTH, BorderLayout.EAST,

19 2.1 Fenster und grafische Oberflächen 13 BorderLayout.SOUTH, BorderLayout.WEST ; // E r s t e l l e n der JPanels und der JLabels JPanel panel ; JLabel l b l ; for ( int i =0; i <5; i ++){ panel = new JPanel ( ) ; panel. setbackground ( c o l o r s [ i ] ) ; l b l = new JLabel ( s t r i n g s [ i ] ) ; panel. add ( l b l ) ; getcontentpane ( ). add ( panel, p o s i t i o n s [ i ] ) ; s e t S i z e ( 4 0 0, ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ; public c l a s s FrameCreator06 { public static void main ( S t r i n g [ ] args ){ new BorderLayoutFrame ( ) ; In diesem Beispiel werden die Hintergrundfarben der JPanels in verschiedenen Farben angezeigt, um deutlich zu machen, wo sich welches JPanel befindet. Dazu wird ein Array colors erstellt, welches verschiedene Farben enthält. Des Weiteren wird ein Array positions mit Strings erstellt, welche die Positionen der JPanels beinhalten. Danach werden dann mit einer For-Schleife neue JPanels erstellt und diese in der passenden Farbe und an der passenden Position angezeigt. Hier sieht man gut, dass die Methode add(), in diesem Beispiel, zwei Argumente übergeben bekommt. Das erste ist das hinzuzufügende Objekt und das zweite die Position des Objekts in dem Container. Natürlich darf man auch hier nicht vergessen vorher das Layout einzustellen. Dies geht hier genauso wie bei dem FlowLayout oder dem GridLayout, indem man eine Instanz von BorderLayout an die Methode set- Layout(Layout) übergibt. Auch hier gibt es wieder eine Beispielabbildung (Abb. 2.6).

20 2.1 Fenster und grafische Oberflächen 14 Abbildung 2.6. Ein BorderLayout ordnet die JPanels so an, dass ein Zentrum und ein Rand entstehen. BoxLayout Ein so genanntes BoxLayout bietet dem Programmierer schon wesentlich mehr Gestaltungsmöglichkeiten, als alle bisher vorgestellten Layouts und lässt sich trotz dieser Möglichkeiten relativ einfach verwenden. Die grobe Ausrichtung aller Objekte in einem BoxLayout wird über Konstanten festgelegt. Dabei orientieren sich alle Objekte in einem Container, welcher ein BoxLayout verwendet, an einer horizontalen oder einer vertikalen Linie. Es gibt vier verschiedene Konstanten, welche verwendet werden können: X AXIS - Hier werden die Objekte von links nach rechts angeordnet Y AXIS - Hier werden die Objekte von oben nach unten angeordnet LINE AXIS - Diese Konstante existiert erst seit Java 1.4 und ordnet die Objekte von links nach rechts oder von rechts nach links an, je nachdem, welche Sprache im System eingestellt ist. Dabei haben bestimmte Sprachen eine umgekehrte Orientierung, im Vergleich mit der Konstanten X AXIS. PAGE AXIS - Diese Konstante existiert ebenfalls erst seit Java 1.4 und ordnet die Objekte von oben nach unten oder von unten nach oben an. Genau wie bei LINE AXIS gibt es hier eine sprachenabhängige Orientierung. Des Weiteren bietet ein BoxLayout die Möglichkeit leere Bereiche in einen Container einzufügen und somit die Objekte einfach anzuordnen. Es gibt hier drei verschiedene Arten von Objekten: RigidArea - Eine RigidArea bekommt eine Breite und Höhe übergeben, welche sie ausfüllen soll. Diese wird beispielsweise verwendet, wenn man zwischen zwei Objekten einen bestimmten Abstand einhalten möchte.

21 2.1 Fenster und grafische Oberflächen 15 Glue - Bei einem Glue kann es sich um einen horizontalglue oder um einen verticalglue handeln. Diese füllen soviel Platz aus, wie sie bekommen können. Box.Filler - Ein Filler kann eine minimale, maximale und eine gewünschte Größe besitzen. So kann man beispielsweise ein Objekt erstellen, welches mindestens 5 Pixel und höchstens 50 Pixel breit sein sollte. Im folgenden Quellcode sieht man ein kleines Beispielprogramm, welches ein Loginfenster darstellen soll. Es verwendet dazu zwei verschiedene Layouttypen. Zum Einen das BorderLayout, um die Trennung zwischen dem Hauptbereich und dem Bereich mit den JButtons durchzuführen und zum Anderen zwei BoxLayouts, welche den Hauptbereich und den Knöpfebereich am unteren Rand organisieren. import java. awt. BorderLayout ; import java. awt. Dimension ; import javax. swing. BorderFactory ; import javax. swing. Box ; import javax. swing. BoxLayout ; import javax. swing. JButton ; import javax. swing. JFrame ; import javax. swing. JLabel ; import javax. swing. JPanel ; import javax. swing. JPasswordField ; import javax. swing. JTextField ; / Hinzufügen von JPanels und JLabels und verwenden e i n e s BoxLayouts / c l a s s BoxLayoutFrame extends JFrame{ public BoxLayoutFrame (){ super ( BoxLayout ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // BorderLayout f ü r das Fenster e i n s t e l l e n getcontentpane ( ). setlayout ( new BorderLayout ( ) ) ; / Hauptbereich des JFrames e i n s t e l l e n / // JPanel f ü r den Hauptbereich des JFrames JPanel mainpanel = new JPanel ( ) ;

22 2.1 Fenster und grafische Oberflächen 16 // BoxLayout f ü r das mainpanel e i n s t e l l e n mainpanel. setlayout ( new BoxLayout ( mainpanel, BoxLayout. PAGE AXIS ) ) ; // JLabels und J T e x t f i e l d s zur Eingabe JLabel l b l U s e r = new JLabel ( Login : ) ; JTextField txtuser = new JTextField ( User ) ; JLabel l b l P a s s = new JLabel ( Password : ) ; JPasswordField txtpass = new JPasswordField ( pass ) ; mainpanel. add ( l b l U s e r ) ; mainpanel. add ( Box. createrigidarea (new Dimension ( 0, 5 ) ) ) ; mainpanel. add ( txtuser ) ; mainpanel. add ( Box. createrigidarea (new Dimension ( 0, 5 ) ) ) ; mainpanel. add ( l b l P a s s ) ; mainpanel. add ( Box. createrigidarea (new Dimension ( 0, 5 ) ) ) ; mainpanel. add ( txtpass ) ; / Buttonbereich des JFrames e i n s t e l l e n / // JPanel f ü r d i e Buttons JPanel buttonpanel = new JPanel ( ) ; // BoxLayout f ü r das buttonpanel e i n s t e l l e n buttonpanel. setlayout ( new BoxLayout ( buttonpanel, BoxLayout. LINE AXIS ) ) ; //oben, l i n k s, unten, r e c h t s buttonpanel. setborder ( BorderFactory. createemptyborder ( 5, 0, 5, 0 ) ) ; // JButtons e r s t e l l e n

23 2.1 Fenster und grafische Oberflächen 17 JButton btnok = new JButton ( Ok ) ; JButton btncancel = new JButton ( Cancel ) ; buttonpanel. add ( Box. c r e a t e H o r i z o n t a l G l u e ( ) ) ; buttonpanel. add ( btnok ) ; buttonpanel. add ( Box. createrigidarea ( new Dimension ( 5, 0 ) ) ) ; buttonpanel. add ( btncancel ) ; // Hinzufügen der JPanels zum BorderLayout getcontentpane ( ). add ( mainpanel ) ; getcontentpane ( ). add ( buttonpanel, BorderLayout.SOUTH) ; s e t S i z e ( 2 2 0, ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ; public c l a s s FrameCreator07 { public static void main ( S t r i n g [ ] args ){ new BoxLayoutFrame ( ) ; Nachdem in dem Quellcode ein JFrame erstellt wurde und für das ContentPane des JFrames das BorderLayout eingestellt wurde, erstellt das Programm das JPanel mainpanel. Dieses bekommt über setlayout() ein BoxLayout zugewiesen. Der Konstruktor erhält dazu das JPanel, welches vom Layout organisiert werden soll, sowie die grobe Orientierung als Konstante. Danach werden die JLabels und das JTextField, sowie das JPasswordField erstellt, welche zur Texteingabe verwendet werden können. Danach werden sie zum mainpanel hinzugefügt und mit RigidAreas voneinander etwas abgetrennt. Die RigidAreas sorgen dafür, dass das Objekt, welches vorher eingefügt wurde 5 Pixel von dem Objekt entfernt liegt, welches danach eingefügt wird. Die selbe Prozedur wird für das buttonpanel durchgeführt, nur dass man hier eine horizontale Orientierung über den BoxLayout-Konstruktor einstellt und vor den JButtons einen horizontalglue einfügt. Dieser erstreckt sich über den kompletten nicht genutzten Bereich der vor den JButtons liegt. Des weiteren wird für

24 2.1 Fenster und grafische Oberflächen 18 das buttonpanel eine Border eingestellt. Dabei handelt es sich um einen Rand, welcher um alle Objekte des buttonpanels gezogen wird, so dass ein Abstand zwischen dem Rand des Fensters und dem mainpanel entsteht. Zu guter letzt werden dann noch die beiden JPanels in das JFrame eingefügt. Dabei kommt das mainpanel in den zentralen Bereich des BorderLayouts und das buttonpanel in den südlichen Bereich. Das Ergebnis wird in Abbildung 2.7 dargestellt. Abbildung 2.7. Verwendung eines BoxLayouts zur Erstellung eines Login- Bildschirms. GridBagLayout Das GridBagLayout ist wohl das Layout, welches am schwierigsten zu verwenden ist, jedoch bietet es dem Programmierer wohl die meisten Möglicheiten um grafische Elemente auszurichten. Dabei verwendet das GridBagLayout ein Gitter, ähnlich wie das GridLayout. Der Unterschied besteht jedoch darin, dass sich in einem GridBagLayout die Objekte über mehrere Gitterzellen erstrecken können. Dabei berechnet Java automatisch anhand der minimalen und maximalen Größen der Objekte wie hoch und breit die Zellen sein sollen. Zusätzlich kann man noch Constraints angeben, welche die Darstellung der einzelnen Objekte beeinflussen können. Anders als bei den bisher verwendeten Layouts wird hier nicht einfach das Layout zu einem Container hinzugefügt, sondern es wird noch weiterhin verwendet, um die Constraints zu jedem grafischen Objekt hinzufügen zu können. Es gibt folgende Constraints: gridx & gridy - Geben an in welcher Zelle ein grafisches Objekt seinen Ursprung besitzen soll. gridwidth & gridheight - Gibt an über wieviele Zellen sich ein Objekt erstrecken soll. weightx & weighty - Gibt an wie breit und hoch die Zelle im Vergleich zu den anderen ist.

25 2.1 Fenster und grafische Oberflächen 19 ipadx & ipady - Vergrößert ein Objekt in breite und/oder Höhe. Dabei ist die Vergrößerung ein Pixelwert und wird mit 2 multipliziert, da die Vergrößerung nach links und nach rechts bzw. nach oben und nach unten durchgeführt wird. fill - Falls ein Objekt kleiner ist als der Bereich den es ausfüllen soll kann man angeben wie es sich vergrößern soll um den Bereich auszufüllen. Es gibt die konstanten Werte NONE, HORIZONTAL, VERTICAL und BOTH, welche alles statische Konstanten der Klasse GridBagLayout sind. insets - Mit Insets kann man einen Rahmen um ein Objekt legen. Diesen Abstand hält das Objekt dann als Rand zu den Zellen ein in denen sich das Objekt befindet. anchor - Dieser Wert gibt an, an welcher Stelle sich ein Objekt in seinen Zellen befinden soll, wenn es kleiner als die Zellen ist. Es gibt neun Konstanten die übergeben werden können und die jeweils eine Ecke der Zelle oder das Zentrum darstellen. Die Konstanten sind FIRST LINE START, PAGE START, FIRST LINE END, LINE START, CENTER, LINE END, LAST LINE START, PAGE END und LAST LINE END, wobei beispielsweise FIRST LINE START oben links wäre und LAST LINE END unten rechts. Im folgenden Beispiel sieht man dann wie man das Layout nutzen kann. Wegen der Komplexität des Layouts sollte man aber am besten einfach mit dem Layout rumspielen um ein besseres Verständnis für dieses zu erhalten. import java. awt. GridBagConstraints ; import java. awt. GridBagLayout ; import java. awt. I n s e t s ; import javax. swing. JButton ; import javax. swing. JComboBox ; import javax. swing. JFrame ; import javax. swing. JLabel ; import javax. swing. JScrollPane ; import javax. swing. JTextArea ; import javax. swing. JTextField ; / Hinzufügen von JPanels und JLabels und verwenden e i n e s GridBagLayouts / c l a s s GridBagLayoutFrame extends JFrame{ public GridBagLayoutFrame (){ super ( GridBagLayout ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // E i n s t e l l e n e i n e s GridBagLayouts

26 2.1 Fenster und grafische Oberflächen 20 GridBagLayout g b l = new GridBagLayout ( ) ; getcontentpane ( ). setlayout ( gbl ) ; Hier sieht man einen gewissen Unterschied zu den vorherigen Layouts. Es wird nicht nur eine Instanz von GridBagLayout erstellt, welche an die Methode set- Layout(Layout) übergeben wird. Es wird stattdessen auch eine Variable gbl vom Typ GridBagLayout erstellt, an welche die Instanz vorher übergeben wird. Dies ist nötig da man später noch öfters auf das GridBagLayout zugreifen muss. / Hier wird e i n GridBagConstraint O b j e k t e r s t e l l t / GridBagConstraints gbc = new GridBagConstraints ( ) ; / E i n s t e l l e n der Constraints und Hinzufügen der Objekte / // Label gbc. gridwidth = GridBagConstraints.REMAINDER; gbc. g r i d h e i g h t = 1 ; gbc. weightx = 1 ; gbc. weighty = 1 ; gbc. anchor = GridBagConstraints. LINE START ; // Konstruktor I n s e t s : oben, l i n k s, unten, r e c h t s gbc. i n s e t s = new I n s e t s ( 0, 0, 5, 0 ) ; JLabel label = new JLabel ( Autobörse : Kfz Verkauf ) ; gbl. s e t C o n s t r a i n t s ( label, gbc ) ; getcontentpane ( ). add ( label ) ; Hier sieht man nun wie ein Constraint erstellt wird. Dieser wird vor jedem Hinzufügen eines Objekts, in die grafische Oberfläche, eingestellt und für das jeweilige Objekt angepasst. Es wird beispielsweise die Anzahl der Zellen, welche das Objekt belegen soll über das Constraint eingestellt und auch das Gewicht sowie der Anker werden festgelegt. Zusätzlich wird mit gbc.insets ein Rand um das Objekt erstellt. Das einzufügende Objekt soll ein JLabel sein, welches erstellt wird und dann zu-

27 2.1 Fenster und grafische Oberflächen 21 sammen mit dem Constraint an das Layout übergeben wird. Zu guter letzt wird das Objekt dann in den Container des JFrames eingefügt. // Label gbc. gridwidth = 1 ; gbc. i n s e t s = new I n s e t s ( 0, 0, 0, 0 ) ; label = new JLabel ( Fahrzeugtyp : ) ; gbl. s e t C o n s t r a i n t s ( label, gbc ) ; getcontentpane ( ). add ( label ) ; //ComboBox f ü r Fahrzeugtyp gbc. gridwidth = GridBagConstraints.REMAINDER; gbc. f i l l = GridBagConstraints.HORIZONTAL; gbc. weightx = 3 ; gbc. i n s e t s = new I n s e t s ( 0, 5, 0, 5 ) ; S t r i n g [ ] strarray = { Sportwagen, Limosine, Coupe, Transporter, Bus, Lkw, Motorrad ; JComboBox cmbtype = new JComboBox( strarray ) ; gbl. s e t C o n s t r a i n t s (cmbtype, gbc ) ; getcontentpane ( ). add (cmbtype ) ; // Label gbc. gridwidth = 1 ; gbc. i n s e t s = new I n s e t s ( 0, 0, 0, 0 ) ; gbc. weightx = 1 ; label = new JLabel ( Beschreibung : ) ; gbl. s e t C o n s t r a i n t s ( label, gbc ) ; getcontentpane ( ). add ( label ) ; // TextArea f ü r d i e Beschreibung gbc. gridwidth = GridBagConstraints.REMAINDER; gbc. g r i d h e i g h t = 3 ; gbc. f i l l = GridBagConstraints.BOTH; gbc. weightx = 1 0 ;

28 2.1 Fenster und grafische Oberflächen 22 gbc. weighty = 1 0 ; gbc. i n s e t s = new I n s e t s ( 0, 5, 0, 5 ) ; JTextArea txtexpl = new JTextArea ( Beschreibung ) ; JScrollPane s c r o l l P a n e = new JScrollPane ( txtexpl ) ; s c r o l l P a n e. s e t V e r t i c a l S c r o l l B a r P o l i c y ( JScrollPane.VERTICAL SCROLLBAR ALWAYS) ; s c r o l l P a n e. s e t H o r i z o n t a l S c r o l l B a r P o l i c y ( JScrollPane.HORIZONTAL SCROLLBAR AS NEEDED) ; gbl. s e t C o n s t r a i n t s ( scrollpane, gbc ) ; getcontentpane ( ). add ( s c r o l l P a n e ) ; // Label gbc. gridwidth = 1 ; gbc. i n s e t s = new I n s e t s ( 0, 0, 0, 0 ) ; gbc. weightx = 1 ; gbc. weighty = 1 ; gbc. f i l l = GridBagConstraints.NONE; label = new JLabel ( P r e i s : ) ; gbl. s e t C o n s t r a i n t s ( label, gbc ) ; getcontentpane ( ). add ( label ) ; // T e x t f e l d f ü r den Preis gbc. gridwidth = GridBagConstraints.REMAINDER; gbc. f i l l = GridBagConstraints.HORIZONTAL; gbc. weightx = 3 ; gbc. i n s e t s = new I n s e t s ( 0, 5, 0, 5 ) ; JTextField t x t P r i c e = new JTextField ( 0,00 ) ; gbl. s e t C o n s t r a i n t s ( txtprice, gbc ) ; getcontentpane ( ). add ( t x t P r i c e ) ; // Buttons gbc. gridwidth = 1 ; gbc. i n s e t s = new I n s e t s ( 0, 0, 0, 0 ) ; gbc. weightx = 1 ; gbc. weighty = 1 ; gbc. f i l l = GridBagConstraints.NONE; JButton btnsend = new JButton ( Senden ) ; gbl. s e t C o n s t r a i n t s ( btnsend, gbc ) ; getcontentpane ( ). add ( btnsend ) ;

29 2.1 Fenster und grafische Oberflächen 23 JButton btncancel = new JButton ( Abbrechen ) ; gbl. s e t C o n s t r a i n t s ( btncancel, gbc ) ; getcontentpane ( ). add ( btncancel ) ; s e t S i z e ( 3 0 0, ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ; public c l a s s FrameCreator08 { public static void main ( S t r i n g [ ] args ){ new GridBagLayoutFrame ( ) ; Die gesamte Prozedur wird für jedes Objekt, der grafischen Oberfläche durchgeführt. Es ist also möglich mit einem GridBagLayout wesentlich komplexere Oberflächen zu erstellen, als mit den vorher dargestellten Layouts. Aus diesem Grund ist das Layout jedoch etwas schwieriger zugänglich. Einen Screenshot von der Oberfläche, welche von dem obigen Quellcode erzeugt wird zeigt die Abbildung 2.8. Abbildung 2.8. Mit einem GridBagLayout kann man komplexere grafische Oberflächen erstellen.

30 2.1 Fenster und grafische Oberflächen 24 CardLayout Das folgende CardLayout ist das einzige Layout in Java, welches mit dem Benutzer der grafischen Oberfläche interagiert. Man kann sich das System dahinter so vorstellen, dass verschiedene Container, beispielsweise ein JPanel, Karten eines Kartenspiels darstellen. Nimmt man nun die erste Karte vom Stapel kann man die zweite sehen usw.. Dies gibt dem Benutzer die Möglichkeit die verschiedenen JPanels durchzublättern. Das Layout an sich ist relativ einfach zu implementieren. Es wird ganz normal an die Methode setlayout(layout) übergeben, sollte jedoch vorher in einer Variablen gespeichert werden, so dass man später noch Zugriff darauf hat, um die Benutzerinteraktionen durchzuführen. Danach können dann über add(object,string) die Containerklassen oder beliebige grafische Objekte zu dem Container, welcher das CardLayout verwendet, übergeben werden. Dabei kann über den Stringparameter jedem Objekt ein Name zugewiesen werden, über welchen man das Objekt später direkt anzeigen lassen kann. Die Objekte werden dann hintereinander dargestellt und können nun über die folgenden Funktionen durchgeblättert werden. next(container) - Zeigt das nächste Element an previous(container) - Zeigt das vorherige Element an first(container) - Zeigt das erste Element an last(container) - Zeigt das letzte Element an show(container, String) - Zeigt ein bestimmtes Element direkt an Der folgende Quellcode zeigt wie man relativ einfach, solch ein CardLayout verwenden kann. import java. awt. BorderLayout ; import java. awt. CardLayout ; import java. awt. FlowLayout ; import java. awt. event. ActionEvent ; import java. awt. event. A c t i o n L i s t e n e r ; import javax. swing. JButton ; import javax. swing. JFrame ; import javax. swing. JPanel ; import javax. swing. JTextArea ; / Hinzufügen von JPanels und JLabels und verwenden e i n e s CardLayouts / class CardFrame extends JFrame implements A c t i o n L i s t e n e r { private JButton btnprev ; private JButton btnnext ; private JButton b t n F i r s t ; private JButton btnlast ;

31 2.1 Fenster und grafische Oberflächen 25 private JButton btn5 ; private CardLayout cardlayout ; Es ist wichtig, dass das CardLayout, wie hier gezeigt, für die gesamte Klasse verfügbar ist, da in der Methode actionperformed(actionevent) später nochmal darauf zugegriffen werden muss. private JPanel pnlmain ; public CardFrame (){ s e t T i t l e ( CardLayout ) ; s e tdefaultcloseoperation ( JFrame. EXIT ON CLOSE ) ; // E i n s t e l l e n e i n e s BorderLayouts getcontentpane ( ). setlayout ( new BorderLayout ( ) ) ; // Einfügen von ButtonPanel und ShowPanel JPanel pnlbutton = new JPanel ( ) ; pnlmain = new JPanel ( ) ; getcontentpane ( ). add ( pnlbutton, BorderLayout.SOUTH) ; getcontentpane ( ). add ( pnlmain, BorderLayout.CENTER) ; / E i n s t e l l e n der Layouts von pnlbutton und pnlmain / pnlbutton. setlayout (new FlowLayout ( ) ) ; cardlayout = new CardLayout ( ) ; pnlmain. setlayout ( cardlayout ) ; Hier wird für das JPanel pnlmain das CardLayout eingerichtet. Es handelt sich dabei um das JPanel, welches die Textfelder anzeigt. Das CardLayout wird dabei in die globale Variable cardlayout geschrieben, um später noch darauf zugreifen zu können. // Hinzufügen der Objekte zu den Panels btnprev = new JButton ( < ) ;

32 2.1 Fenster und grafische Oberflächen 26 btnnext = new JButton ( > ) ; b t n F i r s t = new JButton ( S t a r t ) ; btnlast = new JButton ( Ende ) ; btn5 = new JButton ( Mitte ) ; pnlbutton. add ( btnprev ) ; pnlbutton. add ( btnnext ) ; pnlbutton. add ( b t n F i r s t ) ; pnlbutton. add ( btnlast ) ; pnlbutton. add ( btn5 ) ; btnprev. addactionlistener ( this ) ; btnnext. addactionlistener ( this ) ; b t n F i r s t. addactionlistener ( this ) ; btnlast. addactionlistener ( this ) ; btn5. addactionlistener ( this ) ; for ( int i =0; i <10; i ++){ pnlmain. add (new JTextArea ( Karte + i ), + i ) ; Hier werden die einzelnen JButtons erzeugt, mit welchen man die JPanels durchblättern kann. Ihnen werden ActionListener hinzugefügt. ActionListener werden zur Interaktion mit grafischen Elementen benötigt und werden im Abschnitt näher erläutert. Des Weiteren werden JTextAreas erzeugt, welche in das pnlmain hinzugefügt werden. Diese Stellen später die einzelnen Seiten unseres CardLayouts dar. s e t S i z e ( 4 0 0, ) ; s e t L o c a t i o n ( 5 0, 5 0 ) ; s e t V i s i b l e ( true ) ; public void actionperformed ( ActionEvent evt ){ i f ( evt. getsource ( ). e q u als ( btnnext )){ cardlayout. next ( pnlmain ) ; else i f ( evt. getsource ( ). e q u als ( btnprev )){ cardlayout. p revious ( pnlmain ) ; else i f ( evt. getsource ( ). e q u als ( b t n F i r s t )){ cardlayout. f i r s t ( pnlmain ) ; else i f ( evt. getsource ( ). e q u als ( btnlast )){ cardlayout. l a s t ( pnlmain ) ; else { cardlayout. show ( pnlmain, 5 ) ;

33 2.1 Fenster und grafische Oberflächen 27 public c l a s s FrameCreator09 { public static void main ( S t r i n g [ ] args ){ new CardFrame ( ) ; In der Methode actionperformed(actionevent) werden Benutzereingaben abgefangen und ausgewertet. Hier wird festgelegt, dass beispielsweise ein Klick auf den JButton btnnext die nächste Karte des CardLayouts anzeigt. Wie die Oberfläche aussieht, wenn man den Quellcode ausführt zeigt die Abbildung 2.9. Abbildung 2.9. Das CardLayout ist das einzige Layout in Java, welches Interaktionen des Benutzers zulässt. Weitere Informationen zu den hier erläuterten Layouts können in A Visual Guide to Layout Managers ([Javb]) von Sun nachgeschlagen werden.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

GroupLayout Anmerkung

GroupLayout Anmerkung Swing Layouts Layoutmanager Ordnen Elemente eines Containers nach einem bestimmten Verfahren an Der Container erfragt bei jeder Neudarstellung bei seinem Layoutmanager, wie die Komponenten des Containers

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

GUI Programmierung mit JAVA Swing

GUI Programmierung mit JAVA Swing GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische

Mehr

GUI Programmierung in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen der Programmierung APPLETS Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Grafische Benutzeroberflächen mit Swing

Grafische Benutzeroberflächen mit Swing Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,

Mehr

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

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Comic Life 2.x. Fortbildung zum Mediencurriculum

Comic Life 2.x. Fortbildung zum Mediencurriculum Comic Life 2.x Fortbildung zum Mediencurriculum - 1 - Comic Life Eine kurze Einführung in die Bedienung von Comic Life 2.x. - 2 - Starten von Comic Life Bitte starte das Programm Comic Life. Es befindet

Mehr

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT LADEN DER VORLAGE 2 Öffnen Sie Outlook 2 Klicken Sie auf EXTRAS >> OPTIONEN 2 Im Optionenfeld von Outlook folgend Sie den Schritten 2 Fenster

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt:

Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt: Ein Port Scanner ist eine gute Möglichkeit den eigenen Server auf offene Ports zu scannen. Zu viele nicht benötigte und offene Ports können auf Ihrem Server und auf Ihrem Computer ein Sicherheitsrisiko

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Abwesenheitsnotiz im Exchangeserver 2010

Abwesenheitsnotiz im Exchangeserver 2010 Abwesenheitsnotiz im Exchangeserver 2010 Richten sie die Abwesenheitsnotiz in Outlook 2010 ein und definieren sie, dass nur Absender eine Nachricht bekommen, die ihnen direkt eine Mail gesendet haben.

Mehr

Layout Manager. Astrid Beck FHT Esslingen

Layout Manager. Astrid Beck FHT Esslingen Layout Manager Astrid Beck FHT Esslingen Layout Manager Layout Manager arrangieren den Inhalt eines Containers gemäß vorgegebener Regeln Layout Manager BorderLayout North, South, East, West, Center FlowLayout

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 37 JList JTable Layout-Manager GridBagLayout 2 / 37 Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Argelander Institut für Astronomie. Persönliche Website

Argelander Institut für Astronomie. Persönliche Website Argelander Institut für Astronomie Persönliche Website Zunächst loggt man sich auf www.astro.uni-bonn.de/typo3 mit seinem AIfA Zugang ein. Nach erfolgreichem Login befindet man sich im Backend des TYPO3

Mehr

Newsletter. 1 Erzbistum Köln Newsletter

Newsletter. 1 Erzbistum Köln Newsletter Newsletter 1 Erzbistum Köln Newsletter Inhalt 1. Newsletter verwalten... 3 Schritt 1: Administration... 3 Schritt 2: Newsletter Verwaltung... 3 Schritt 3: Schaltflächen... 3 Schritt 3.1: Abonnenten Verwaltung...

Mehr

Ihr CMS für die eigene Facebook Page - 1

Ihr CMS für die eigene Facebook Page - 1 Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Fotos in Tobii Communicator verwenden

Fotos in Tobii Communicator verwenden Fotos in Tobii Communicator verwenden Hier wird beschrieben wie man Fotos in Tobii Communicator verwenden kann und was man zur Nutzung beachten sollte. Fotonutzung in Tobii Communicator In einigen Fällen

Mehr

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java

Mehr

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

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 JList 2 JTable 3 Layout-Manager 4 GridBagLayout Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

Herstellen von Symbolen mit Corel Draw ab Version 9

Herstellen von Symbolen mit Corel Draw ab Version 9 Herstellen von Symbolen mit Corel Draw ab Version 9 Einleitung : Icon Design-Überblick: 1) Gestalten in Corel Draw 10.0 3) Vorlage für Photopaint für Import von Corel 4) Einfügen in die PSD-Datei und Bearbeiten

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Anleitung zur Webservice Entwicklung unter Eclipse

Anleitung zur Webservice Entwicklung unter Eclipse Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog. Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Text Formatierung in Excel

Text Formatierung in Excel Text Formatierung in Excel Das Aussehen des Textes einer oder mehrerer Zellen kann in Excel über verschiedene Knöpfe beeinflusst werden. Dazu zuerst die betroffenen Zelle(n) anwählen und danach den entsprechenden

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Swing :Komponenten I (Teil 2)

Swing :Komponenten I (Teil 2) l Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen l Swing stellt eine Menge von Klassen zur Verfügung l Swing wurde

Mehr

Handbuch Groupware - Mailserver

Handbuch Groupware - Mailserver Handbuch Inhaltsverzeichnis 1. Einführung...3 2. Ordnerliste...3 2.1 E-Mail...3 2.2 Kalender...3 2.3 Kontakte...3 2.4 Dokumente...3 2.5 Aufgaben...3 2.6 Notizen...3 2.7 Gelöschte Objekte...3 3. Menüleiste...4

Mehr

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 In diesem Tutorial will ich Ihnen zeigen, wie man mit LibreOffice Calc 3.5 eine einfache Entlohnungsberechnung erstellt, wobei eine automatische

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Folgender Artikel soll veröffentlicht und mit dem Editor TinyMCE gestaltet werden: Eine große Überschrift Ein Foto Hier kommt viel Text. Hier kommt

Mehr

Seriendruck mit der Codex-Software

Seriendruck mit der Codex-Software Seriendruck mit der Codex-Software Seriendruck mit der Codex-Software Erstellen der Seriendruck-Datei in Windach Sie können aus der Adressverwaltung von Windach eine sogenannte Seriendruck-Datei erstellen,

Mehr

Einstellungen in MS-Word - Schnellzugriffsleiste -

Einstellungen in MS-Word - Schnellzugriffsleiste - - Schnellzugriffsleiste - Anpassen der Schnellzugriffsleiste Zusätzlich zum Menüband (Multifunktionsleiste) existiert eine Schnellzugriffsleiste die man sich selbst konfigurieren kann Schaltfläche "Office"

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr

Mensch-Maschine-Interaktion

Mensch-Maschine-Interaktion Universität Dortmund, Fachbereich Informatik Peter Bollweg, OH16 E08, bollweg@ls7.cs.uni-dortmund.de, 6328 Constantin Timm, OH16 E06, timm@ls12.cs.uni-dortmund.de, 6144 Christian Asche Dortmund, 19. Oktober

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

Mehr

Anleitung zur Nutzung der OFML Daten von Cascando in pcon.planner

Anleitung zur Nutzung der OFML Daten von Cascando in pcon.planner Anleitung zur Nutzung der OFML Daten von Cascando in pcon.planner In dieser Anleitung wird die Nutzung von OFML-Daten von Cascando in pcon.planner Schritt für Schritt erläutert. 1. Cascando Produkte in

Mehr

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

Mehr

Erzherzog Johann Jahr 2009

Erzherzog Johann Jahr 2009 Erzherzog Johann Jahr 2009 Der Erzherzog Johann Tag an der FH JOANNEUM in Kapfenberg Was wird zur Erstellung einer Webseite benötigt? Um eine Webseite zu erstellen, sind die folgenden Dinge nötig: 1. Ein

Mehr

Abwesenheitsnotiz im Exchange Server 2010

Abwesenheitsnotiz im Exchange Server 2010 Abwesenheitsnotiz im Exchange Server 2010 1.) Richten Sie die Abwesenheitsnotiz in Outlook 2010 ein und definieren Sie, an welche Absender diese gesendet werden soll. Klicken Sie dazu auf Datei -> Informationen

Mehr

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen. Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Mehr

MPDS4 EXAMPLE DATENBANK

MPDS4 EXAMPLE DATENBANK MPDS4 EXAMPLE DATENBANK Erste Schritte In diesem Tutorial lernen Sie, wie Sie MPDS4 starten und wie Sie eine Fabrikanlage auf dem Bildschirm anzeigen und mittig ausrichten können. Voraussetzungen Windows

Mehr

Erstellung eigener Hot-Spot-Karten

Erstellung eigener Hot-Spot-Karten mit der Lernwerkstatt 7 Lieber Lernwerkstatt-User! Die Hot-Spot-Umgebung der Lernwerkstatt 7 bietet den Lehrern zukünftig viele weitere Möglichkeiten, den Computer als Medium in den eigenen Lehrplan zu

Mehr

Installationsanleitungen

Installationsanleitungen Installationsanleitungen INPA SGBD-Entwicklungsumgebung (EDIABAS) INPA für Entwickler Bevor Sie EDIABAS / INPA installieren können, müssen Sie sich für den Ordner sgref auf smuc0900 freischalten lassen.

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Allgemeines: Bitte lesen Sie sich diese Anleitung zuerst einmal komplett durch. Am Besten, Sie drucken sich diese Anleitung

Mehr

Java Lab 2006/12/13 Client

Java Lab 2006/12/13 Client Java Lab 2006/12/13 Client Prof. Dr. Bernhard Humm Version: 1.0 Date: 2006/12/06 Darmstadt University of Applied Sciences Department of Computer Science Schöfferstr. 8b 64295 Darmstadt Germany 1 Einleitung

Mehr

Tutorial Speichern. Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, 044 760 22 41 jroos@hispeed.ch - www.forums9.ch

Tutorial Speichern. Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, 044 760 22 41 jroos@hispeed.ch - www.forums9.ch Jacqueline Roos - Riedstrasse 14, 8908 Hedingen, 044 760 22 41 jroos@hispeed.ch - www.forums9.ch Tutorial Speichern Wer ein Fotobuch zusammenstellen möchte, der sucht oft auf dem ganzen Computer und diversen

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Java GUI Entwicklung mit Swing

Java GUI Entwicklung mit Swing Seminarunterlage Version: 5.03 Version 5.03 vom 13. Februar 2014 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH Funktionsbeschreibung Lieferantenbewertung von IT Consulting Kauka GmbH Stand 16.02.2010 odul LBW Das Modul LBW... 3 1. Konfiguration... 4 1.1 ppm... 4 1.2 Zertifikate... 5 1.3 Reklamationsverhalten...

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

HTML Programmierung. Aufgaben

HTML Programmierung. Aufgaben HTML Programmierung Dr. Leander Brandl BRG Keplerstraße - A-8020 Graz Universität Graz - Institut für Experimentalphysik Fachdidaktik der Physik http://w4.brgkepler.asn-graz.ac.at 1. Die erste Web-Seite

Mehr

GUI-Programmierung in Java

GUI-Programmierung in Java GUI-Programmierung in Java Jan Pihl, Daniel Bugdalle 1. Einleitung Betreuer: Thomas Ströder Die Bedienung von Software stellt sich oft als etwas schwierig für viele Nutzer heraus, wenn es keine grafische

Mehr

LimeSurvey -Anbindung

LimeSurvey -Anbindung LimeSurvey -Anbindung 1 Was ist LimeSurvey Inhalt 1 Was ist LimeSurvey... 3 2 Grundeinstellungen in CommSy... 4 3 Grundeinstellungen in LimeSurvey... 5 4 LimeSurvey-Umfrage erstellen... 7 4.1 So erstellen

Mehr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

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

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

Mehr

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 1. Software installieren 2. Software starten Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 3. Auswahl 1. Neues Fotobuch erstellen oder 2. ein erstelltes, gespeichertes Fotobuch laden und bearbeiten.

Mehr

Wie man einen Artikel. auf Lautschrift.org veröffentlicht. Eine Anleitung in 14 Schritten

Wie man einen Artikel. auf Lautschrift.org veröffentlicht. Eine Anleitung in 14 Schritten Wie man einen Artikel auf Lautschrift.org veröffentlicht Eine Anleitung in 14 Schritten Die Schritte: 1. Einloggen 2. Neuen Beitrag starten 3. Die Seite Neuen Beitrag erstellen 4. Menü ausklappen 5. Formatvorlagen

Mehr

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen

Typo3 - Inhalte. 1. Gestaltung des Inhaltsbereichs. 2. Seitenunterteilung einfügen Typo3 - Inhalte 1. Gestaltung des Inhaltsbereichs Das Layout der neuen TVA Website sieht neben dem grafischen Rahmen und den Navigations-Elementen oben und links einen grossen Inhaltsbereich (graue Fläche)

Mehr

PTV VISUM TIPPS & TRICKS:

PTV VISUM TIPPS & TRICKS: PTV VISUM TIPPS & TRICKS: LUFTBILD VON GOOGLEMAPS EINFÜGEN Wie fügt man ein richtig georeferenziertes Luftbild von GoogleMaps ein? Der vorherige Beitrag zum Thema Wie wählt man ein passendes Koordinatensystem

Mehr

Content Management System (CMS) Manual

Content Management System (CMS) Manual Content Management System (CMS) Manual Thema Seite Aufrufen des Content Management Systems (CMS) 2 Funktionen des CMS 3 Die Seitenverwaltung 4 Seite ändern/ Seite löschen Seiten hinzufügen 5 Seiten-Editor

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr