04 - Actions. Actions



Ähnliche Dokumente
GUI Programmierung mit JAVA Swing

Programmieren II. Menü-Klassen in Java. Menüs. Menüs. Action. Dr. Klaus Höppner. GridBagLayout. Hochschule Darmstadt SS 2008

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Swing Lernen am Code Teil 1

Funktionale und Objekt-Orientierte Programmierkonzepte

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

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

NTB Druckdatum:

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

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

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen

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

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

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

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

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Grafische Benutzeroberflächen

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

GUI Programmierung mit javax.swing

Javakurs für Fortgeschrittene

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Einführung in GUI-Programmierung. javax.swing

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

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

Objektorientierte Software-Entwicklung

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Objektorientierte Programmierung

Swing. Swing. Einführung Painting bei Swing Menus and Action Swing-Komponenten. Zusammenfassung

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Teil 1: Grundeigenschaften von Rechnern und Software

Programmiertechnik GUI Programmierung mit Java Swing

Softwaretechnik 1 Übung 2

11. GUI-Programmierung mit SWING Überblick

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

...erinnern Sie sich? oopjs4b / kwhbkd4r

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

public class Beispiel1 extends Frame {

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Institut für Informatik

Grundlagen der Programmierung APPLETS

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

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

Eventhandling. Delegation model Eventhandler model

Medientechnik. Übung 3 MVC & Observer

2A Basistechniken: Weitere Aufgaben

SWING. DVG2-09 -Swing 1

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

14 Swing-Komponenten , Prof. Dr. D. Ratz

Liste Programmieren Java Überblick

Grafische Benutzungsschnittstellen (GUIs) mit Swing

2. Programmierung von Benutzungsschnittstellen

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60

Grafische Benutzeroberflächen mit Swing

Aufbau einer Swing-Applikation

Grafische Benutzungsschnittstellen (GUIs) mit Swing

Graphical User Interfaces

DHBW Karlsruhe, Angewandte Informatik Programmieren in JAVA W. Geiger, T. Schlachter, C. Schmitt, W.

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

Swing :Komponenten I (Teil 2)

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Aufgabe 03. Swing: Die Swing-Oberfläche wird vorgegeben: Abbildung 1 Musterlösung

Transkript:

Actions

Motivation!In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt.!häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch MenuItems, Buttons, Textfelder, Comboboxen!Das Erscheinungsbild dieser Komponenten ähnelt sich häufig. Es werden gleiche Beschriftungen und Icons verwendet.!es werden gleiche ToolTip-Texte und Mnemonic und Accelerator Keys verwendet.!die Komponente sind alle gleichzeitig zu aktivieren bzw. zu deaktivieren.!es ist zweckmäßig die Realisierung der Aktion sowie das Erscheinungsbild der Swing-Komponenten an einer Stelle zu zentralisieren. " Interface Action und abstrakte Klasse AbstractAction 2

Das Interface Action!Das Interface Action ist abgeleitet vom Interface ActionListener und erbt damit die Methode public void actionperformed (ActionEvent e)!bei einer Swing-Komponente wird ein Action-Object mit der Methode public void setaction(action a) registriert.!das selbe Action-Objekt kann bei verschiedenen Komponenten registriert werden.!mit den Methoden public boolean isenabled() bzw. public void setenabled(boolean b) des Action-Interfaces wird der Status aller Komponenten bei dem das Action-Objekt registriert ist abgefragt bzw. modifiziert. 3

!Die Methoden public Object getvalue(string key) bzw. public void putvalue(string key, Object value) fragen den Wert einer Eigenschaft ab bzw. modifizieren diesen.!folgende Schlüssel sind definiert: NAME : entspricht settext( ) SHORT_DESCRIPTION : entspricht settooltiptext() ) LONG_DESCRIPTION : Text für Online-Helps SMALL_ICON : entspricht seticon( ) ACTION_COMMAND_KEY : entspricht setactioncommand( ) ACCELERATOR_KEY : entspricht setacceleratorkey( ) MNEMONIC_KEY : entspricht setmnemonic( )!Anwendungsbeispiel: putvalue(action.short_description, "Action"); 4

JButton JMenuItem JCheckBox JRadioButton JTextField JComboBox NAME SHORT_DESCRIPTION LONG_DESCRIPTION SMALL_ICON ACTION_COMMAND_KEY ACCELERATOR_KEY MNEMONIC_KEY 5

Die abstrakte Klasse AbstractAction!Die abstrakte Klasse AbstractAction implementiert alle Methoden des Interfaces Action außer der Methode actionperformed, die vom Interface ActionListener geerbt wird.!die einfachste Variante der Nutzung ist das Ableiten einer Klasse, die die Methode actionperformed implementiert.!die Nutzung ist also genauso einfach wie die Nutzung des Interfaces ActionListener. 6

Beispiel TestAction import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestActions { public static Action act = new AbstractAction("Action Component", new mageicon("action.gif")){ { putvalue(action.short_description, "Action ToolTipText"); public void actionperformed(actionevent e) { String src = e.getsource().getclass().getname(); if (src.equals("javax.swing.jcombobox")) { JComboBox cb = (JComboBox)(e.getSource()); if (!cb.getselecteditem().equals(getvalue(action.name)) ) return; System.out.println("Action ausgelöst von "+src); ; 7

public static void main(string[] args) { JFrame fr = new JFrame("TestActions"); JMenuBar mb = new JMenuBar(); fr.setjmenubar(mb); JMenu m = new JMenu("test"); mb.add(m); JMenuItem mi = new JMenuItem(); mi.setaction(act); m.add(mi); Container cp = fr.getcontentpane(); cp.setlayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.anchor=gridbagconstraints.west; gbc.insets=new Insets(10, 10, 10, 10); gbc.gridx=0; cp.add(new JLabel("JButton"), gbc); JButton jb = new JButton(); jb.setaction(act); gbc.gridx=1; cp.add(jb, gbc); 8

gbc.gridx=0; cp.add(new JLabel("JComboBox"), gbc); final JComboBox co = new JComboBox(new Object [] {"Zeile1", "Zeile2", act.getvalue(action.name), "Zeile4", "Zeile5" ); co.setaction(act); gbc.gridx=1; gbc.fill=gridbagconstraints.horizontal; cp.add(co, gbc); gbc.gridx=0; gbc.gridwidth=2; final JButton activatebutton = new JButton("disable"); activatebutton.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e) { activatebutton.settext(act.isenabled()?"enable":"disable"); act.setenabled(!act.isenabled()); ); cp.add(activatebutton, gbc); 9

gbc.gridx=0; cp.add(new JLabel("setToolTipText"), gbc); final JTextField tt = new JTextField(); tt.addactionlistener(new ActionListener(){ public void actionperformed(actionevent e) { act.putvalue(action.short_description, tt.gettext()); ); gbc.gridx=1; cp.add(tt, gbc); fr.setbounds(0, 0, 400, 400); fr.setvisible(true); fr.setdefaultcloseoperation(jframe.eit_on_close); 10