public class Beispiel1 extends Frame {

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

GUI Programmierung mit JAVA Swing

Grundlagen der Programmierung APPLETS

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

Einführung in GUI-Programmierung. javax.swing

Javakurs für Fortgeschrittene

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

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

Objektorientierte Software-Entwicklung

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

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

Einführung in GUI-Programmierung. javax.swing

Kapitel 8: Grafische Benutzerschnittstellen

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

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

Objektorientierte Programmierung

NTB Druckdatum:

Grafische Benutzeroberflächen

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

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

Funktionale und Objekt-Orientierte Programmierkonzepte

Grafische Benutzeroberflächen

Javakurs für Fortgeschrittene

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Programmiertechnik GUI Programmierung mit Java Swing

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Grafische Benutzeroberflächen

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

Einführung in die Programmierung für NF. Übung

Fachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Java für Computerlinguisten

Computergrafik 2016 Oliver Vornberger. Kapitel 02: Grafische Benutzeroberflächen

Layout Manager. Astrid Beck FHT Esslingen

Graphische Benutzungsoberflächen

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Graphical User Interfaces

Kapitel 2: Grafische Benutzeroberflächen

Grundlagen der Informatik für Ingenieure I

import java.awt.*; import java.awt.event.*; import javax.swing.*;

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Aufbau einer typischen Java-Datei

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Tag 9: Grafische Benutzeroberflächen

GUIs in Java und ihre Programmierung

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

04 - Actions. Actions

13 Grafische Oberflächen , Prof. Dr. D. Ratz

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Einführung in Java, Teil 6

Einführung in die OOP mit Java

Hochschule der Medien Prof. Uwe Schulz 13. Juli 2009 Klausur Informatik, EDV-Nr Seite 1 von 6. Teil 2: Aufgaben

Ereignisverwaltung und Layout-Typen

GUI Programmierung mit javax.swing

Kapitel 7: Ereignis-basierte Kommunikation

Vorlesung Programmieren

Programmieren 2 Selbststudium Semesterwoche 4

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Instrumentierung und Dekodierung

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

Grundlagen der Informatik für Ingenieure I

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Einführung in Swing. Graphical User Interface

Ho Ngoc Duc IFIS - Universität zu Lübeck

Auswahl aus mehreren Alternativen:

Einige vorgefertigte Layout-Manager:

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

8.6 Visualisierung der Sortieralgorithmen

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

Session 1: Classes and Applets

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

Eventhandling. Delegation model Eventhandler model

Probeklausur Informatik 2 Sommersemester 2013

Teil 5: Benutzeroberflächen 5.2 Einführung GUI-Programmierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU Darmstadt

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

11. GUI-Programmierung mit SWING Überblick

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Übungsmodus und Reviews

Eventhandling. Delegation model Eventhandler model

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Graphische Oberflächen Teil 1

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Swing : Komponeneten I (Teil 1) Was ist Swing?

Swing oder AWT? Was ist das: Swing bzw. AWT. Haupterkennungsmerkmal von Swing Source-Code:

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java

Grafische Benutzeroberflächen mit Swing

Transkript:

Das AWT (Abstract Window Toolkit) Menge von Klassen und Interfaces im Paket java.awt.* Wird zur Erzeugung grafischer Benuterzoberflächen (Graphical User Interface, GUI) verwendet. SWING (zu finden im paket javax.swing.* ) erweitert die Möglichkeiten des awt.

import java.awt.*; Beispiel 1 public class Beispiel1 extends Frame { public static void main(string[] args) { Button nummer1 = new Button("Eins"); Button nummer2 = new Button("Zwei"); Beispiel1 fenster = new Beispiel1(); FlowLayout meinlayout = new FlowLayout(); fenster.setlayout(meinlayout); fenster.add(nummer1); fenster.add(nummer2); fenster.pack(); fenster.show();

Übungen mit der Java API Von welchen Klassen stammt die Klasse Frame ab? Suchen Sie die Klasse Button. Welche Möglichkeiten gibt es den Konstruktor aufzurufen? Welche Superklasse besitzt die Klasse Button? Was bewirkt die Klasse FlowLayout? Was passiert wenn ich sie nicht aufrufe? Woher erbt die Klasse Frame die Methode setlayout()? Woher stammen die Methoden add(), pack() und show() und was bewirken sie? Welche Komponenten (Components) gibt es? Wie kann ich das Fenster wieder schließen?

Aufgabe 1 Erstellen Sie ein Klasse Beispiel2 in der sie die folgenden Komponenten verwenden: Button Label Checkbox List TextArea Nutzen Sie dafür die Java API und verwenden Sie den LayoutManager FlowLayout.

import java.awt.*; public class Beispiel2 extends Frame { public static void main(string[] args) { Button mybutton = new Button("Eins"); Label mylabel = new Label("Label1"); Checkbox mycheckbox = new Checkbox("Schalter"); List mylist = new List(3, true); mylist.add("auswahl1"); mylist.add("auswahl2"); mylist.add("auswahl3"); TextArea mytextarea = new TextArea(5,30); Beispiel2 fenster = new Beispiel2(); FlowLayout meinlayout = new FlowLayout(); fenster.setlayout(meinlayout); fenster.add(mybutton); fenster.add(mylabel); fenster.add(mycheckbox); fenster.add(mylist); fenster.add(mytextarea); fenster.pack(); fenster.show(); Lösung Aufgabe 1

LayoutManager FlowLayout: ordnet der Reihe nach an BorderLayout: unterteilt in: central, north, east, south, west GridLayout: n* m Matrix GridBagLayout

import java.awt.graphics; import java.awt.font; import java.awt.color; Beispiel public class Beispiel5 extends java.applet.applet { Font myfont = new Font("Arial", Font.BOLD, 20); public void paint(graphics fenster) { fenster.setfont(myfont); fenster.setcolor(color.blue); fenster.drawstring("hello my World", 50, 100);

<html> <head> <title>meine neue Seite</title> </head> <body> <applet code = "Beispiel5.class" width=300 height =200> </applet> </body> </html>

Übungen Suchen sie den verwendeten Konstruktor der Klasse Font in der Java-API. Welche Bedeutung besitzen die einzelnen Parameter? Suchen Sie die Methoden setfont(), setcolor() und drawstring() und analysieren Sie die Übergabeparameter. Worum handelt es sich in den einzelnen Fällen? Ändern Sie im Beispiel die Schrift auf "Times New Roman", die Schriftgröße auf 25, den Schriftschnitt auf kursiv, die Farbe auf grau und die Fenstergröße auf 500 x 500. Positionieren Sie die Schrift bei den Koordinaten 150 (x-achse) und 220 (y-achse).

Übungen Im bin-verzeichnis des Java SDK finden Sie die Datei appletviewer.exe. Diese ermöglicht das Starten eines über die Eingabeaufforderung mit dem Kommando appletviewer MeineKlasse.java Dazu ist es allerdings notwendig das Applet-Tag in die Java Datei zu integrieren. (Zu Beginn, noch vor der eigentlichen Klassendefinition). Zusätzlich ist es notwendig die Tags auszukommentieren. Beispiel: //<applet code = "MeineKlasse.class" width=400 height = 400></applet> Übung: Ändern Sie das vorhergehende Beispiel dahingehend, dass es mit dem appletviewer aufgerufen werden kann.

<html> </html> <head> </head> <body> </body> Beispiel 6 TeilA <title>meine neue Seite</title> <applet code = "Beispiel6.class" width=500 height =500> </applet>

import java.awt.*; Beispiel 6 TeilB public class Beispiel6 extends java.applet.applet { int breite = 10; int tiefe = 10; public boolean mousedown(event evt, int a, int b) { breite = a; tiefe = b; Neuaufruf der Paint-Methode repaint(); return true; public void paint (Graphics schirm) { schirm.setcolor(color.blue); schirm.drawstring("follow me", breite,tiefe);

Beispiel 1a (GUI mit SWING) import java.awt.*; import javax.swing.jframe; Importieren einer SWING-Klasse public class Beispiel1a extends JFrame { public static void main(string[] args) { Button nummer1 = new Button("Eins"); Button nummer2 = new Button("Zwei"); Beispiel1a fenster = new Beispiel1a(); FlowLayout meinlayout = new FlowLayout(); Container c = fenster.getcontentpane(); c.setlayout(meinlayout); c.add(nummer1);c.add(nummer2); fenster.setbounds(350,350,250,100); fenster.setdefaultcloseoperation(jframe.exit_on_close); fenster.setvisible(true);

Die Klassenhierarchie von Object bis JFrame java.lang Object Component Ein Objekt das auf dem Bildschirm dargestellt wird und mit dem Benutzer "interagiert". Beispiel: Button, Checkbox, Scrollbar java.awt Container Window Komponente die andere Komponenten beinhalten kann Einfaches Fenster ohne Titelzeile oder Grenzen Frame Fenster mit Titelzeile und Grenzen javax.swing JFrame Fenster mit erweiterten Möglichkeiten

mit javax.swing import javax.swing.*; import java.awt.*; public class HelloApplet_b extends JApplet{ public void init() { Container cp = getcontentpane(); cp.add(new JLabel("Mein erstes Applet!"));

Unterschied AWT und SWING AWT und SWING decken nicht die selben Bereiche ab. Überschneidungen gibt es vor allem bei den Fenstern und Standardsteuerelementen (Schalter, Listenfelder). SWING erzeugt "lightweight"-komponenten die betriebssystemunspezifisch sind, wohingegen AWT "heavyweight"-komponenten erstellt, die je nach Betriebssystem anders aussehen. Bei SWING handelt es sich um die neuere Technologie. AWT unter Windows SWING

Vorteile von SWING SWING ist moderner: die Verwendung wird von SUN empfohlen. Die Steuerelemente sind vollständig in Java realisiert und die Bibliothek ist umfangreicher. SWING ist umfangreicher: SWING bietet eine umfangreichere Funktionalität die in Zukunft vermutlich noch erweitert werden wird. SWING ist strukturierter: SWING verfügt über eine einheitlichere Namensgebung als das AWT. SWING besitzt ein einheitliches Design: ein Java- Programm soll auf jeder Plattform gleich aussehen (Metal-Look).

Beispiel Teil1 //<applet code=schalter.class width=250 height=100> </applet> import javax.swing.*; import java.awt.*; import java.awt.event.*;

Beispiel Teil2 public class Schalter extends JApplet implements ActionListener { JLabel meinlabel = new JLabel("Label hier"); JButton buttonok = new JButton("OK"); JButton buttoncancel = new JButton("Cancel");

Beispiel Teil3 public void init() { Container c = getcontentpane(); c.setlayout(new FlowLayout()); buttonok.setactioncommand("on_command"); buttonok.addactionlistener(this); buttoncancel.setactioncommand("cancel_command"); buttoncancel.addactionlistener(this); c.add(meinlabel); c.add(buttonok); c.add(buttoncancel);

Beispiel Teil4 public void actionperformed(actionevent e) { if(e.getactioncommand().equals("cancel_command")) { meinlabel.settext("cancel gedrückt!"); else { meinlabel.settext("ok gedrückt!");

Übungen Suchen Sie in der Java API alle im Beispiel verwendeten Klassen aus den Paketen javax.swing, java.awt und java.awt.event. Suchen Sie ebenso die verwendeten Konstruktoren der Klassen JLabel und JButton. Was bewirkt die Methode getcontentpane()? Was bewirkt die Methode setlayout() und welche Übergabeparameter erwartet sie? Was bewirkt die Methode setactioncommand()? Was bewirkt die Methode setactionlistener()? Woher kommt die Methode actionperformed()? Muss sie implementiert werden? Welche Übergabeparameter erwartet sie? Was bewirkt die Methode settext() und woher kommt sie?

//<applet code=schalter2.class width=250 height=100></applet> import javax.swing.*; import java.awt.*; import java.awt.event.*; Verwendung des Interface MouseListener public class Schalter2 extends JApplet implements MouseListener { JLabel label = new JLabel("Label hier"); JButton buttonok = new JButton("OK"); public void init() { Container c = getcontentpane(); c.setlayout(new FlowLayout()); buttonok.addmouselistener(this); c.add(label); c.add(buttonok); public void mouseclicked(mouseevent e) { if (e.getbutton()== MouseEvent.BUTTON1) { label.settext("links"); else { label.settext("rechts"); public void mousepressed(mouseevent e) { public void mousereleased(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) {

Übungen Müssen die Methoden mousepressed(), mousereleased(), mouseentered() und mouseexited() deklariert werden? Erklären Sie die Bedeutung der rot eingerahmten Felder.

Aufgaben Schreiben Sie ein Applet, welches ein Label und eine Schaltfläche aufweist. Im Label steht zu Beginn die Zahl 2 und bei jedem Drücken der Schaltfläche soll die Zahl verdoppelt werden (2,4,8,16...). Ändern Sie das Applet dann dahingehend, dass Sie selbst einen Wert eingeben können. (Anmerkung: verwenden Sie das Feld JTextField).