Grafische Benutzungsschnittstellen (GUIs) mit Swing

Größe: px
Ab Seite anzeigen:

Download "Grafische Benutzungsschnittstellen (GUIs) mit Swing"

Transkript

1 Java: Kapitel 7 Grafische Benutzungsschnittstellen (GUIs) mit Swing Programmentwicklung WS 2009/2010 Holger Röder holger.roeder@informatik.uni-stuttgart.de

2 Überblick über Kapitel 7 Die GUI-Bibliotheken in Java: AWT und Swing Beispiel: einfache Swing-Anwendung Swing Komponenten, Container, Fenster Ereignisbehandlung Menüs und Toolbars GUI-Komponenten Model-Delegate-Prinzip Swing und Threads 2

3 AWT Die im JDK enthaltene Grafikbibliothek Abstract Windowing Toolkit (AWT) ermöglicht it Java 1.0 die Erstellung grafischer Oberflächen für Java-Programme. AWT ist leicht verständlich, bringt jedoch einige Nachteile mit sich: AWT nutzt die GUI-Elemente des Betriebssystems somit kein einheitliches Look-and-Feel von Java-Programmen unter verschiedenen Betriebssystemen. Nur eine eingeschränkte Menge von GUI-Elementen steht zur Verfügung (z. B. keine Tabellen, keine Bäume). 3

4 Swing Seit Java 1.2 steht mit Swing eine Alternative zum AWT zur Verfügung. Swing zeichnet die GUI-Komponenten lbst: Swing-Programme hen somit auf allen Plattformen (weitgehend) gleich aus. Dies ermöglicht es auch, das Look-and-Feel eines Swing-Programms zur Laufzeit umzuschalten (pluggable look and feel). Swing verwendet eine Model-Delegate-Architektur zur Trennung von Verarbeitungs- und Präntationslogik. Der ursprüngliche Performance-Nachteil von Swing- gegenüber AWT- Anwendungen spielt heute praktisch keine Rolle mehr. Swing erweitert in vielen Fällen die AWT-Klasn. 4

5 Ein einfacher Beispiel-Dialog Labels (JLabel) Fenster (JFrame) Textfelder (JTextField) Button (JButton) 5

6 Swing-Beispiel (1) public class BeispielDialog extends JFrame { JButton buttonspiegeln = new JButton(); JLabel label1 = new JLabel(); JLabel label2 = new JLabel(); JTextField feldeingabe = new JTextField(); JTextField feldausgabe = new JTextField();... Eigene Fensterklas abgeleitet von JFrame Je GUI-Element ein Attribut 6

7 Swing-Beispiel (2)... public BeispielDialog() { super("beispiel-dialog"); tlayout(null);... Konstruktor Aufruf des Oberklasnkonstruktors tzt Fenstertitel label1.ttext("eingabe:"); label1.tbounds(new Rectangle(20, 20, 100, 30)); add(label1);... Komponente wird zum Fenster hinzugefügt Eigenschaften der GUI- Komponenten werden getzt 7

8 Swing-Beispiel (3) Um Thread-Sicherheit zu gewährleisten, erfolgt die Initialisierung des Fensters in einem paraten Thread Ein Objekt der von JFrame abgeleiteten public static void main(string[] args) { Klas wird instanziiert SwingUtilities.invokeLater(new Runnable() { public void run() { BeispielDialog dialog = new BeispielDialog(); dialog.pack(); dialog.tsize(400, 150); dialog.tlocation(300, 200); dialog.tdefaultclooperation(jframe.exit_on_close); dialog.tvisible(true); );... und sichtbar gemacht... 8

9 Swing-Beispiel (4) Look-and-Feel UIManager.tLookAndFeel( "com.sun.java.swing.plaf.windows.windowslookandfeel"); SwingUtilities.updateComponentTreeUI(this); UIManager.tLookAndFeel( "com.sun.java.swing.plaf.motif.motiflookandfeel"); SwingUtilities.updateComponentTreeUI(this); // Vor JFrame-Instanziierung: JFrame.tDefaultLookAndFeelDecorated(true);... UIManager.tLookAndFeel( "javax.swing.plaf.metal.metallookandfeel"); SwingUtilities.updateComponentTreeUI(this); 9

10 Komponenten und Container Als Komponenten werden in Swing einzelne GUI-Elemente bezeichnet, die über eine bestimmte Art der Darstellung verfügen und auf Ereignis reagieren können. Beispiele: Buttons (JButton), Eingabefelder (JTextField), Labels (JLabel), Tabellen (JTable) Basisklas JComponent Container sind spezielle Komponenten, die ihrerits weitere Komponenten aufnehmen können. Der Container ermöglicht das Hinzufügen und Entfernen von Komponenten und übernimmt die Positionierung der in ihm enthaltenen Komponenten. Beispiele: Panels (JPanel), Toolbars (JToolBar), Scroll-Container (JScrollPane) Schachtelung: JTextField innerhalb eines JScrollPane- Containers 10

11 Top-Level-Container Top-Level-Container sind Container auf oberster Ebene JFrame: Hauptfenster einer Anwendung, typisch mit Rahmen, Systemmenü, Titelleiste, Menüleiste JDialog: zumeist modale Dialogfenster (für Benutzerabfragen, spezifische Programmmeldungen etc.) JWindow: rahmenlo Fenster ohne Menüleiste Die meisten Swing-Anwendungen basieren auf JFrame als Basisklas für das Hauptfenster der Anwendung. 11

12 JFrame Schematischer Aufbau Die Layered Pane enthält (optional) eine Menüleiste und die Content Pane Datei Die Content Pane enthält die GUI-Komponenten (Buttons, Eingabefelder etc.) Bearbeiten Ansicht Hallo Welt OK Frame (JFrame) Root Pane Layered Pane Menü/Content P. Glass Pane Die Glass Pane ist üblicherwei unsichtbar und kann Oberflächenereignis filtern 12

13 JFrame als Basis für eigene Anwendungen Über die Methode add() können GUI-Komponenten zur Content Pane des Hauptfensters hinzugefügt werden. JButton meinbutton = new JButton();... add(meinbutton); // Button wird platziert Häufig verwendete Methoden: ttitle(string) tzt den Fenstertitel tmenubar(menubar) fügt eine Menüleiste hinzu pack() tzt alle Komponenten auf ihre bevorzugte Größe tsize(int, int) tzt Fenstergröße tvisible(boolean) zeigt oder versteckt das Fenster dispo() gibt Ressourcen frei, schließt das Fenster tdefaultclooperation(int) Verhalten beim Schließen des Fensters (JFrame.EXIT_ON_CLOSE beendet das Programm beim Schließen des Fensters 13

14 Layout-Manager Die pixelgenaue Positierung von GUI-Komponenten bringt Nachteile mit sich: bei Größenänderung des Fensters, bei unterschiedlichen Schriftgrößen etc. werden die GUI-Komponenten evtl. nicht korrekt dargestellt. Aus diem Grund übernimmt in Swing ein Layout-Manager die Positionierung der Komponenten innerhalb eines Containers. Verschiedene Layout-Manager sind verfügbar, z. B. FlowLayout: Anordnung nebeneinander in Zeile, evtl. neue Zeile BorderLayout: Anordnung links/rechts/oben/unten und mittig GridLayout: Anordnung in rechteckigem Gitter, alle Zellen haben die gleiche Größe GridBagLayout: ebenfalls Gitteranordnung, Zellen können unterschiedliche Größe haben, Komponenten können sich über mehrere Zellen erstrecken Sonderfall null: kein LayoutManager, pixelgenaue Positionierung Über die Methode tlayout() des Containers kann das entsprechende Layout eingestellt werden. 14

15 Layout-Manager Vergleich // Layout-Manager tzen... add(new JButton("Button 1"), BorderLayout.EAST); add(new JButton("Button 2"), BorderLayout.SOUTH); add(new JButton("Button 3"), BorderLayout.WEST); add(new JButton("Button 4"), BorderLayout.CENTER); add(new JButton("Button 5"), BorderLayout.NORTH); tlayout(new FlowLayout()) tlayout(new BorderLayout()) tlayout(new GridLayout(3, 2)) Zweiter Parameter nur für BorderLayout 15

16 Ereignisbehandlung Die Ereignisbehandlung innerhalb von Swing-Anwendungen erfolgt nach dem Listener-Prinzip : Listener-Objekte (event listener) registrieren sich bei möglichen Ereignisquellen (event sources, z. B. Buttons, Textfelder) Bei Auftreten eines Ereigniss (Mausklick, Tastatureingabe etc.) werden die registrierten Listener-Objekte benachrichtigt. Die Listener-Objekte initiieren die pasnde Reaktion auf das Ereignis. Listener können sich bei beliebig vielen Ereignisquellen registrieren, ebenso können Quellen über beliebig viele registrierte Listener verfügen. 16

17 Ereignisbehandlung nach dem Listener-Prinzip Tritt ein Ereignis ein, kann das Listener-Objekt z. B. eine Methode des JFrame- Unterklasnobjekts aufrufen Listener-Objekt Das Listener-Objekt registriert sich beim Button und wird bei Ereignisn benachrichtigt Ereignis: Mausklick, Tastatureingabe... buttonspiegeln.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { buttonspiegeln_actionperformed(e); Anonymes Listener-Objekt );... private void buttonspiegeln_actionperformed(actionevent e) { StringBuffer eingabe = new StringBuffer(feldEingabe.getText()); eingabe.rever(); feldausgabe.ttext(eingabe.tostring()); Ereignisbehandlun g 17

18 Ereignis und Listener-Schnittstellen Swing kennt verschiedene Arten von Ereignisn, die jeweils durch unterschiedliche Ereignisklasn repräntiert werden. Listener-Objekte, die über entsprechende Ereignis benachrichtigt werden, müsn die jeweilige Schnittstelle implementieren. Ereignisklas Beschreibung Listener-Schnittstelle KeyEvent Tastendruck KeyListener MouEvent Mausklick, Betreten/ Verlasn der Komp. MouMotionEvent Mausbewegung WindowEvent ActionEvent Fenster geschlosn, verkleinert Aktion ausgelöst (z.b. Button gedrückt) MouListener MouMotionListener WindowListener ActionListener Die Registrierung der Listener-Objekte erfolgt über entsprechende Registrierungsmethoden, z. B. addmoumotionlistener() 18

19 Menüs Eine Menüleiste ist ein Objekt vom Typ JMenuBar, das dem Hauptfenster über die Methode addjmenubar() hinzugefügt wird. Die Menüs sind Instanzen von JMenu, die einzelnen Menüeinträge Instanzen von JMenuItem. JMenu ist eine Unterklas von JMenuItem: Untermenüs können somit realisiert werden, indem ein JMenu-Objekt anstelle eines JMenuItem- Objekts zu einem Menü hinzugefügt wird. JMenuBar menueleiste = new JMenuBar(); JMenu menuedatei = new JMenu(); JMenu menuebearbeiten = new JMenu(); JMenuItem menueeintragspiegeln = new JMenuItem(); 19

20 Menüs (2) menuedatei.ttext("datei"); menuebearbeiten.ttext("bearbeiten"); menueeintragspiegeln.ttext("spiegeln"); menueeintragspiegeln.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { menueeintragspiegeln_actionperformed(e); Anonymes Listener-Objekt ); menuebearbeiten.add(menueeintragspiegeln); menueleiste.add(menuedatei); menueleiste.add(menuebearbeiten); tjmenubar(menueleiste); Menüleiste zu Fenster hinzufügen Menüeintrag zu Menü hinzufügen Menü zu Menüleiste hinzufügen 20

21 Toolbars Toolbars (Werkzeugleisten) sind Container, die andere Komponenten (z. B. Buttons) neben- oder untereinander gruppieren. Toolbars werden als Objekte vom Typ JToolBar realisiert. JToolBar toolbar = new JToolBar(); JButton toolbarbuttonspiegeln = new JButton("Text spiegeln", new ImageIcon("icon.gif")); 21

22 Toolbars (2) JToolBar toolbar = new JToolBar(); JButton toolbarbuttonspiegeln = new JButton("Text spiegeln", new ImageIcon("icon.gif")); toolbarbuttonspiegeln.addactionlistener(new ActionListener() {...); toolbar.add(toolbarbuttonspiegeln); add(toolbar, BorderLayout.NORTH); Toolbar zum Fenster hinzufügen Inhalte (Komponenten) zur Toolbar hinzufügen Toolbars können standardmäßig vom Benutzer frei an den vier Fensterrändern verankert oder freischwebend positioniert werden. Hierzu muss das Fenster BorderLayout verwenden. Die Toolbar muss am Rand angeordnet werden (z. B. BorderLayout.NORTH), die übrigen Fensterinhalte (innerhalb eines Containers) in der Mitte (BorderLayout.CENTER). 22

23 Funktionalität zusammenfasn: Actions Häufig soll in Swing-Anwendungen die gleiche Aktion auf verschiedenen Wegen (Menü, Toolbar etc.) ausführbar in. Actions erlauben es, die gleiche Funktionalität verschiedenen Komponenten zu hinterlegen, ohne die Funktionalität mehrfach (z. B. als anonyme ActionListener-Objekte) implementieren zu müsn. Die Action verwaltet zentral den Zustand (Text, Icon, Ausgewählt? etc.) für die Komponenten. Gleiche Action hinterlegt: Beschriftungstext und hinterlegte Funktionalität sind einheitlich tenabled(fal) im Action-Objekt: alle Komponenten, die mit der Action verknüpft sind, werden deaktiviert 23

24 Action-Beispiel Die Schnittstelle Action implementiert die Schnittstelle ActionListener und kann für alle Komponenten eingetzt werden, die Action-Events auslön: Menüs, Buttons, Textfelder etc. Die Klas AbstractAction bietet Standardimplementierungen für die in Action definierten Methoden und eignet sich in vielen Fällen als Basisklas für eigene Actions. class SpiegelnAction extends AbstractAction { public SpiegelnAction(String text, Icon icon) { super(text, icon); Eigene Action- Implementierun g Oberklasnkonstruktor: tzt Beschriftungstext und Icon public void actionperformed(actionevent e) { StringBuffer eingabe = new StringBuffer(feldEingabe.getText()); eingabe.rever(); feldausgabe.ttext(eingabe.tostring()); Methode wird aufgerufen, wenn ein Action-Event ausgelöst wurde 24

25 Action-Beispiel (2) Action instanziieren final SpiegelnAction spiegelnaction = new SpiegelnAction("Text spiegeln", new ImageIcon("icon.gif")); buttonspiegeln = new JButton(spiegelnAction); add(buttonspiegeln); Action den verschiedenen... Komponenten zuwein (Konstruktor, explizite menueeintragspiegeln = new JMenuItem(); Zuweisung) menueeintragspiegeln.taction(spiegelnaction); menueeintragspiegeln.ticon(null); menuebearbeiten.add(menueeintragspiegeln);... toolbarbuttonspiegeln = new JButton(spiegelnAction); toolbar.add(toolbarbuttonspiegeln); 25

26 Zustand in Actions Actions können verschiedene Zustandsattribute verwalten. Über die Methode putvalue(string schluesl, Object o) kann ein Attribut getzt werden, getvalue(string schluesl) liefert das Attribut zurück. Schlüsl Beschreibung Angewendet auf ACCELERATOR_KEY Tastenkombination Menü-Einträge NAME Beschriftung Buttons, Checkboxen, Radiobuttons, Menü- Einträge SHORT_DESCRIPTION ToolTip-Text Buttons, Checkboxen, Radiobuttons SMALL_ICON Icon Buttons, Menü-Einträge (siehe putvalue(small_icon, new ImageIcon("ende.gif")); 26

27 Meldungen mit JOptionPane JOptionPane bietet statische Methoden zur Anzeige typischer modaler Programmmeldungen (Meldung, Nachfragen etc.) JOptionPane.showMessageDialog(null, "Text wurde gespiegelt", "Meldung", JOptionPane.INFORMATION_MESSAGE); if (JOptionPane.showConfirmDialog(null, "Soll der Text gespiegelt werden?", "Frage", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {... 27

28 Übersicht: Swing-GUI-Komponenten (Auszug) javax.swing.jcomponent AbstractButton JMenuItem JLabel JMenu JToggleButton JToolTip JRadioButton JPanel JButton JCheckBox JOptionPane JTextComponent JEditorPane JScrollPane JTextField JTabbedPane JTextArea JTable JTree 28

29 JPanel Ein JPanel-Objekt ist ein (meist) unsichtbarer Container, der in andere Container eingebettet wird. Jedes JPanel-Objekt verfügt über einen Layout-Manager (Standard: FlowLayout), der die enthaltenen Komponenten anordnet. Komplexe Dialoge bestehen häufig aus geschachtelten JPanel- Containern. JFrame mit Layout-Manager GridLayout(2, 1) JPanel mit Layout-Manager BorderLayout() JPanel mit Layout-Manager FlowLayout() 29

30 JTabbedPane Mehrere Registerkarten (Tabs) in einem Fenster können mit der Klas JTabbedPane dargestellt werden. Jede Registerkarte (typisch JPanel-Objekte) kann eigene GUI- Komponenten beinhalten. Über eine am Rand liegende Registerleiste kann zwischen den einzelnen Registerkarten umgeschaltet werden. JTabbedPane tabbedpane = new JTabbedPane( JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT); JPanel tab1 = new JPanel(); tab1.add(new JLabel("Eingabe auf Registerkarte 1")); tab1.add(new JTextField(10)); tab1.add(new JButton("Auswerten")); JPanel tab2 = new JPanel();... tabbedpane.addtab("eins", tab1); tabbedpane.addtab("zwei", tab2); add(tabbedpane); Überladener Konstruktor von JTabbedPane: Registerleiste oben positionieren, ggf. scrollen Registerkarten hinzufügen Für jede Registerkarte ein eigenes JPanel- Objekt erzeugen und füllen 30

31 JLabel, JTextField Für Beschriftungen (optional mit Icon) können JLabel-Komponenten verwendet werden. JLabel label = new JLabel("Label mit Icon", new ImageIcon("icon.jpg"), SwingConstants.RIGHT); Icon als.jpg JTextField stellt ein einfaches Eingabefeld dar: JTextField text = new JTextField("Hier steht Text.");... String s = text.gettext(); Text des Textfelds auslen Zur Eingabe von Passwörtern existiert mit JPasswordField eine Spezialisierung von JTextField. 31

32 JButton, JCheckBox Die Klas JButton stellt mit Text oder einem Icon beschriftete Buttons dar. JButton button = new JButton("Drück mich!", new ImageIcon("C:/pe/icon.gif")); button.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) {... // Ereignisbehandlung ); Ereignisbehandlung nach dem Listener-Prinzip: anonymes Listener-Objekt registriert sich beim Button JCheckBox repräntiert Checkboxen. JCheckBox checkbox1 = new JCheckBox("Auswahlbox"); JCheckBox checkbox2 = new JCheckBox("Auswahlbox, true);... if (checkbox1.isselected()) { checkbox2.tselected(fal); Auswahl abfragen, Auswahl tzen 32

33 JRadioButton JRadioButton ähnelt JCheckBox und stellt Radiobuttons dar. Mehrere Radiobuttons können zu einer ButtonGroup gruppiert werden: in einer Gruppe kann stets nur ein Radiobutton aktiv in. JRadioButton button1 = new JRadioButton("Möglichkeit 1", true); JRadioButton button2 = new JRadioButton("Möglichkeit 2"); JRadioButton button3 = new JRadioButton("Möglichkeit 3"); add(button1); add(button2); add(button3); ButtonGroup group = new ButtonGroup(); group.add(button1); group.add(button2); group.add(button3); Logische Gruppierung der Radiobuttons 33

34 JList Für Listen steht die Klas JList zur Verfügung. Der Inhalt der Liste (Listenmodell) kann in einem Objekt vom Typ DefaultListModel verwaltet werden. Der Zugriff erfolgt wie bei Vector. Bei Änderungen benachrichtigt das Listenmodell die ListBox automatisch, die Darstellung wird aktualisiert. DefaultListModel listmodel = new DefaultListModel(); JList list = new JList(listModel); add(new JScrollPane(list), BorderLayout.SOUTH); JList wird meistens in JScrollPane eingebettet (scrollbare Liste) Listenmodell: ein Object für jede Zeile; tostring() wird für die Anzeige verwendet. public void buttonhinzu_actionperformed(actionevent e) { listmodel.addelement(eingabe.gettext()); 34

35 JComboBox JComboBox repräntiert Comboboxen (Kombinationen aus Eingabefeld und Liste). JComboBox combobox1 = new JComboBox(); combobox1.additem("rote Auswahl"); combobox1.additem("gelbe Auswahl"); combobox1.additem("blaue Auswahl"); add(combobox1); JComboBox combobox2 = new JComboBox(); combobox2.additem("rote Auswahl"); combobox2.additem("gelbe Auswahl"); combobox2.additem("blaue Auswahl"); combobox2.teditable(true); add(combobox2); Nur vorgegebene Auswahlmöglichkeiten Vorgegebene Auswahlmöglichkeiten und freie Eingabemöglichkeit Als Auswahlmöglichkeiten können beliebige Objects angegeben werden; tostring() wird für die Anzeige verwendet. 35

36 JTable Mit JTable steht eine leistungsfähige Tabellen-Komponente zur Verfügung. In der einfachen Variante wird der Tabelleninhalt als Array vorgegeben: tlayout(new BorderLayout(5, 5)); String[][] inhalt = { { "Audi", "A3 1,9 TDI", "S-HD 3273", { "Mercedes", "CLK 200 K", "ES-XA 177",... ; String[] spalten = { "Hersteller", "Modell", "Kennzeichen" ; JTable table = new JTable(inhalt, spalten); add(new JLabel("Fuhrpark:"), BorderLayout.NORTH); add(new JScrollPane(table), BorderLayout.CENTER); Einbettung in JScrollPane Eigene Tabellen- und Spaltenmodelle ermöglichen den Umgang mit komplexen Daten und bieten mehr Kontrolle über Aufbau und Darstellung der Tabelle. Tabelleninhalt und Spaltenbeschriftungen 36

37 Trennung von Daten und Darstellung in Swing Die architektonische Trennung der Daten (und Verarbeitungslogik) von der Darstellung der Daten ist ein bewährtes Prinzip des objekt-orientierten Software-Entwurfs: Saubere Strukturierung des Programmcodes, Entkopplung leichtere Wartung/Erweiterung Darstellung der(lben) Daten auf verschiedene Arten Darstellung 1 Daten a=30% b=50% c=20% Darstellung 2 Auch in Swing-Anwendungen werden Daten und Darstellung getrennt. 37

38 Model-View-Controller (MVC) MVC ist ein Architekturmuster, bei dem Daten (Model), Darstellung (View) und Steuerung (Controller) getrennt werden. a=30% b=50% c=20% Daten und Verarbeitungslogik Model ruft Verarbeitungslogik auf, leitet Änderungen weiter benachrichtigt registrierte Views (Listener) bei Änderungen fragt Daten ab Controller Events (z. B. Benutzereingabe) View (Grafische) Darstellung informiert über notwendige Darstellungsänderung (z. B. durch Textlektion) 38

39 MVC in Swing: Model-Delegate-Prinzip Bei Swing kommt eine vereinfachte Variante von MVC zum Einsatz: das Model-Delegate-Prinzip. Jede Swing-Komponente gliedert sich in zwei Bestandteile: Model: Daten (Zustand) der Komponente UI-Delegate: Grafische Darstellung und Steuerung der Komponente (Darstellung der Daten und Reaktion auf Ereignis) Kombination von View und Controller Model Delegate Controller View 39

40 Model und Delegate bei Swing-Komponenten Bei einfachen Komponenten (Textfelder, Buttons etc.) ist die Aufteilung kaum sichtbar: Das Modell wird durch Aufruf der Komponentenmethode verändert. Bei UI-Ereignisn (Eintippen/Einfügen von Text) wird das Modell automatisch entsprechend geändert und die Darstellung aktualisiert. Bei Komponenten mit komplexen Inhalten (Listen, Tabellen etc.) wird die Separierung von Model und UI-Delegate klar erkennbar. Zu allen Swing-GUI-Komponenten existieren pasnde Schnittstellen, die die Implementierung eigener Modellklasn erlauben. Häufig enthält das JDK auch Standard-Implementierungen dier Schnittstellen. GUI- Komponente JTextField feldeingabe = new JTextField(); feldeingabe.ttext("hallo Welt"); Model Interface Standard-Impl. JButton ButtonModel DefaultButtonModel JTextArea Document PlainDocument JTable TableModel DefaultTableModel etc. 40

41 Eigene Tabellenmodelle: TableModel Eigene Tabellenmodelle müsn die Schnittstelle TableModel implementieren. Die Klas AbstractTableModel bietet Standardimplementierungen für viele der in TableModel definierten Methoden und eignet sich als Basisklas für eigene Tabellenmodelle. In TableModel definierte Methoden, die oft überlagert werden: getrowcount(), getcolumncount() liefern die Zahl der Zeilen/Spalten in der Tabelle zurück getvalueat(zeile, spalte) liefert den Inhalt der angegebenen Tabellenzelle zurück getcolumnname(spalte) liefert die Bezeichnung der angegebenen Spalte zurück Wenn sich die Tabellendaten oder die Tabellenstruktur (Spalten etc.) des Tabellenmodells ändern, müsn die JTable-Objekte benachrichtigt werden, damit die Tabellen neu gezeichnet werden: firetabledatachanged(); // Daten/Zeilenzahl geändert firetablestructurechanged(); // Struktur geändert 41

42 Beispiel: CSV-Tabelle Tabelle, die komma-parierte Werte aus einer Textdatei lädt und anzeigt Tabellenstruktur (Zeilen-/Spaltenzahl, Spaltenbeschriftung) und Tabelleninhalt ist dynamisch! Übrige Zeilen = Tabelleninhalt 1. Zeile bestimmt Spaltenanzahl und -beschriftung 42

43 Tabellenmodell für CSV-Tabelle (1) class CSVTableModel extends AbstractTableModel { List<String[]> data; public int getcolumncount() { return (data == null)? 0 : data.get(0).length; public int getrowcount() { return (data == null)? 0 : data.size() - 1; public String getcolumnname(int column) { return data.get(0)[column]; public Object getvalueat(int row, int column) { String[] values = data.get(row + 1); return (column < values.length)? values[column] : ""; public void loadfile(string fn) throws Exception { data = new Vector<String[]>(); String line; BufferedReader in = new BufferedReader(new FileReader(fn)); while ((line = in.readline())!= null) { String[] values = line.split(","); data.add(values); firetablestructurechanged(); Eigene TableModel- Implementierung auf Basis von AbstractTableModel Eigene sinnvolle Implementierung der vorgegebenen Methoden Benachrichtigt JTable-Objekte, dass sich die Struktur der Tabelle (Spaltenzahl) geändert hat und die Tabelle neu gezeichnet werden muss 43

44 Tabellenmodell für CSV-Tabelle (2)... final CSVTableModel model = new CSVTableModel(); Eigenes Tabellenmodell wird an table = new JTable(model); JTable-Konstruktor übergeben add(new JScrollPane(table), BorderLayout.CENTER);... buttonfilename.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { try { model.loadfile(textfilename.gettext());... );... Modell wird geändert; Modell sorgt für Aktualisierung der Darstellung Neben Tabellenmodellen können auf ähnliche Wei auch eigene Spaltenmodelle (Schnittstelle TableColumnModel) und eigene Zellen- Renderer (z. B. für farbige Tabellenzellen; Schnittstelle TableCellRenderer) implementiert werden. 44

45 Swing und Threads Swing-Anwendungen bestehen typisch aus drei Arten von Threads: Die Anwendung startet im Initial Thread. Im Event Dispatch Thread findet die Ereignisbehandlung der Swing- Oberfläche statt. Langlaufende Tätigkeiten werden als Hintergrund-Tasks in Worker Threads ausgeführt. Um Synchronisationsprobleme zu vermeiden, gilt: Sobald eine Swing- Komponente erstmalig dargestellt wird, sollten Zugriffe (Abfragen, Manipulationen etc.) darauf nur innerhalb des Event Dispatch Threads erfolgen! public static void main(string[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { MeinDialog dialog = new MeinDialog(); dialog.tvisible(true); ); Sauberer Start von Swing- Anwendungen: Im Initial Thread (main-methode) wird über invokelater() und ein entsprechendes Runnable-Objekt dafür gesorgt, dass die Swing- Oberfläche erst im EDT erzeugt wird. 45

46 Arbeiten im Hintergrund: SwingWorker Wenn langlaufende Tätigkeiten im EDT ausgeführt werden, ist die Swing- Oberfläche während der Ausführung blockiert. Entsprechende Arbeiten sollten deshalb an asynchrone Hintergrund- Tasks ausgelagert werden. Hierzu dient die abstrakte Klas SwingWorker. SwingWorker<T, V> ist zweifach typisiert: T ist der Ergebnistyp des Threads, V der Typ möglicher Zwischenergebnis. Die Methode T doinbackground() wird in einem eigenen Thread ausgeführt: hier findet die eigentliche (langlaufende) Tätigkeit statt. Die Swing-Oberfläche ist nicht blockiert, da Ereignis weiterhin vom EDT verarbeitet werden können. Die Methode void done() wird im EDT aufgerufen, sobald die Tätigkeit beendet ist: hier kann das Ergebnis mit get() abgerufen und z. B. durch Zugriff auf Swing-Komponenten gefahrlos dargestellt werden. Weitere Möglichkeiten von SwingWorker: 46

47 SwingWorker-Beispiel class DirSizeWorker extends SwingWorker<Long, Void> { protected String dir; public DirSizeWorker(String dir) { this.dir = dir; protected long count(file f) { long size = 0; if (f.isfile()) size = f.length(); el if (f.isdirectory()) { Langlaufende Methode (berechnet rekursiv Verzeichnisgröße) for (File c : f.listfiles()) { size += count(c); return size; protected Long doinbackground() throws Exception { return count(new File(dir)); protected void done() { try { labelsize.ttext( String.format("Größe: %d Bytes%n", get())); catch (Exception exception) { DirSizeWorker worker = new DirSizeWorker(textDir.getText()); worker.execute(); Eigene SwingWorker- Implementierung: Ergebnistyp Long Wird in eigenem Thread ausgeführt, liefert Verzeichnisgröße als Ergebnis Wird im EDT ausgeführt, sobald das Ergebnis vorliegt Ergebnis abrufen, in Swing- Oberfläche darstellen Worker-Objekt erzeugen und ausführen (z.b. innerhalb einer actionperformed()-methode) 47

Grafische Benutzungsschnittstellen (GUIs) mit Swing

Grafische Benutzungsschnittstellen (GUIs) mit Swing Java: Kapitel 7 Grafische Benutzungsschnittstellen (GUIs) mit Swing Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 7 Die GUI-Bibliotheken

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

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

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

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

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

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

GRAFISCHE BENUTZERSCHNITTSTELLEN

GRAFISCHE BENUTZERSCHNITTSTELLEN Vorlesung 4.4 GRAFISCHE BENUTZERSCHNITTSTELLEN Dr. Philip Mayer # 1 GUIs Grafische Benutzerschnittstellen (GUIs, Graphical User Interfaces) bieten dem Benutzer Zugriff auf ein Anwendungssystem GUIs sind

Mehr

Objektorientierte Softwareentwicklung

Objektorientierte Softwareentwicklung Objektorientierte Softwareentwicklung Exkurs GUI-Programmierung mit Java-SWING Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Für Hinweise und konstruktive Kritik

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

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

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

Swing Grundlagen. Andre Eichmann

Swing Grundlagen. Andre Eichmann Swing Grundlagen Andre Eichmann Inhaltsverzeichnis Swing: Grundlagen - Einleitung - Ein einleitendes Beispiel Swing: Container und Menüs - Hauptfenster - Menüs Swing: Grundlagen Nachteile von AWT: - Schwierig,

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

...erinnern Sie sich? oopjs4b / kwhbkd4r

...erinnern Sie sich? oopjs4b / kwhbkd4r ...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler

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

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

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

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

Einführung in Swing. Graphical User Interface

Einführung in Swing. Graphical User Interface Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung

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

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

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

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

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

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

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

NTB Druckdatum: 01.04.13 -

NTB Druckdatum: 01.04.13 - AWT UND SWING AWT = abstract windowing toolkit Bausteine Eigenes Fenster Programmcode steht nicht im Main, sondern in einer separaten Klasse extends JFrame JWindow selbstständiges Fenster, ohne Rahmen

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

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

Auszug aus der Klassenstruktur

Auszug aus der Klassenstruktur Swing javax.swing Auszug aus der Klassenstruktur JComponent AbstractButton JColorChooser JComboBox JInternalFrame JLabel JList JPanel JTable JTextComponent JTree JToolBar JToolTip JToggleButton JButton

Mehr

Programmieren mit Swing

Programmieren mit Swing Jürgen Schlierf Rudolf Weber Programmieren mit Swing Einfuhrung in die Programmierung mit den Swing-Klassen in Java 2 HANSER Carl Hanser Verlag München Wien Inhaltsverzeichnis 1 Einleitung 1 1.1 Von Java

Mehr

04 - Actions. Actions

04 - Actions. Actions 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

Mehr

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

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

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

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg ) Swing Komponenten Thomas Wieczorek http://www.wieczo.net/?p=76 Hier trage ich die Komponenten zusammen, die Kreling und Wiedling in ihren Klausuren oft verwendet haben. Bei Verbesserung: Bitte Kommentar

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

Graphical User Interfaces

Graphical User Interfaces Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Ereignisse (Events) in Java

Ereignisse (Events) in Java Ereignisse (Events) in Java werden durch Aktionen an GUI-Komponenten ausgelöst Quelle: GUI-Komponente, die ein Ereignis als Instanz einer Event-Klasse erzeugt Beispiel: ein Button, der angeklickt wird

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

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

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

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout. 04.07.2011 Lösungsvorschlag 1. Aufgabe (12 + 12 Punkte): Screendesign : im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea 4P: Panel im East mit FlowLayout

Mehr

GUI Programmierung mit javax.swing

GUI Programmierung mit javax.swing java.awt Swing Komponenten Layout Manager Ausblick GUI Programmierung mit University basierend auf Folien von Dr. Beatrice Amrhein (Bern), 19. Juni 2006 java.awt Swing Komponenten Layout Manager Ausblick

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

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 5. Grafische Userinterfaces Christian Scheible Institut für Maschinelle Sprachverarbeitung 31. Juli 2009 Christian Scheible Java für Computerlinguisten 31. Juli 2009 1 / 33

Mehr

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

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 09 18.12.2013 Inhalt Korrektur Blatt 8 Wiederholung Design Patterns Einführung in GUI s mit Java Swing und AWT Einführung in die Programmierung für NF Übung

Mehr

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

Mehr

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Testen von graphischen Benutzeroberflächen. 26. Juni 2013 Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Drag and Drop (DnD) 1. Transfer-Mechanismus 2. Transfer-Support 3. Cursor-Symbole 4. Einführendes Beispiel 5. Komponenten DnD-fähig machen 6. Standard DnD-Verhalten ändern Folie 1 Lernziele Sie

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

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

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

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

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmiertechnik GUI Programmierung mit Java Swing

Programmiertechnik GUI Programmierung mit Java Swing Programmiertechnik GUI Programmierung mit Java Swing Prof. Dr. Oliver Haase Software Engineering und Verteilte Systeme Raum F012 haase@htwg-konstanz.de Tel: 07531/206-720 Oliver Haase Hochschule Konstanz

Mehr

Benutzeroberflächen. Java Teil 4

Benutzeroberflächen. Java Teil 4 Benutzeroberflächen Java Teil 4 Einleitung Eine grafische Benutzeroberfläche (Graphical User Interface) ermöglicht dem Benutzer die Interaktion mit dem Computer über grafische Symbole. Die GUI haben in

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical

Mehr

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

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: graphical user interface, GUI) in Java GUI-Programmierung in Java GUI-Programmierung in Java 2002 Prof. Dr. Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen

Mehr

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

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in

Mehr

JAVA Oberflächen mit Swing

JAVA Oberflächen mit Swing JAVA Oberflächen mit Swing Grafik von http://javafx.com 168 168 AGENDA Grundlagen GUI Swing JavaFX 169 169 GRAPHISCHE BENUTZEROBERFLÄCHEN (1) AWT = Abstract Window Toolkit Verwendet die jeweiligen GUI-Komponenten

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

Kapitel 8: Grafische Benutzerschnittstellen

Kapitel 8: Grafische Benutzerschnittstellen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

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

Informatik II Aufgabenblatt 7

Informatik II Aufgabenblatt 7 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 7 Gruppenübung Stücklisten Stücklisten beschreiben die Zusammensetzung von Erzeugnissen aus Untereinheiten. Bei der

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

JTable. W. Lang HWR Berlin, SS

JTable. W. Lang HWR Berlin, SS JTable W. Lang HWR Berlin, SS 2014 1 JTable Die Swing-Komponente JTable dient der Darstellung einer zweidimensionalen Tabelle Verwendung häufig im Zusammenhang mit Datenbankanwendungen Im Gegensatz zu

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Inhaltsverzeichnis Einleitung...1 Die Begleit-CD zu diesem Buch...5 Erweiterungen für Java Ereignisse...15

Inhaltsverzeichnis Einleitung...1 Die Begleit-CD zu diesem Buch...5 Erweiterungen für Java Ereignisse...15 Inhaltsverzeichnis 1 Einleitung...1 1.1 Von Java bis Swing?...1 1.2 Wer sind Sie?...1 1.3 Was dieses Buch nicht ist...2 1.4 Die Gliederung dieses Buches...2 1.5 Konventionen...2 1.6 Zeit, anzufangen...4

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

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

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

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

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

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

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

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

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Dokumentation des Projektes Tic Tac Toe

Dokumentation des Projektes Tic Tac Toe Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen. Bildergalerie einfügen Wenn Sie eine Vielzahl an Bildern zu einem Thema auf Ihre Homepage stellen möchten, steht Ihnen bei Schmetterling Quadra das Modul Bildergalerie zur Verfügung. Ihre Kunden können

Mehr

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey Kap. 36 SWING: Menüs und weitere SWING-Container Seán Dempsey Grundlagen von Menüs Hauptklasse: JMenuBar SWING- Entsprechung der AWT-Menüklasse MenuBar JMenuBar Menüleiste (JMenuBar) enthält Menüs (JMenu)

Mehr

Objektorientiertes Programmieren. Übungsblatt 5

Objektorientiertes Programmieren. Übungsblatt 5 Objektorientiertes Programmieren Christian Silberbauer Übungsblatt 5 Folgende Aufgaben beziehen sich weitgehend auf die GUI-Folien der Vorlesung. Speichern Sie bitte die einzelnen Versionen der KundenVerwaltung

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

2015 conject all rights reserved

2015 conject all rights reserved 2015 conject all rights reserved Inhaltsverzeichnis 1 Zugang zu Ausschreibungen...3 1.1 Erstmaliger Zugang... 3 1.2 Erneuter Zugriff auf Ihre Ausschreibungen... 5 2 Zugriff auf Ausschreibungsunterlagen...5

Mehr