und mein Button JButton



Ähnliche Dokumente
Swing Lernen am Code Teil 1

Java I Vorlesung 11 Graphische Oberflächen mit Swing

GUI Programmierung mit JAVA Swing

Objektorientierte Software-Entwicklung

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

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

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Swing :Komponenten I (Teil 2)

Objektorientierte Softwareentwicklung

Einführung in Swing. Graphical User Interface

Grundlagen der Programmierung APPLETS

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Einstieg in die Informatik mit Java

11. GUI-Programmierung mit SWING Überblick

2A Basistechniken: Weitere Aufgaben

...erinnern Sie sich? oopjs4b / kwhbkd4r

Funktionale und Objekt-Orientierte Programmierkonzepte

Programmieren mit Swing

Swing Grundlagen. Andre Eichmann

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

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

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

Java Einführung Collections

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

Schieberegler und analoge Anzeigen

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

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

GUI Programmierung mit javax.swing

NTB Druckdatum:

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

GUI Programmierung in Java

Einführung in die Programmierung

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

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

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

Grafische Benutzeroberflächen mit Swing

von Anja Austermann Drag and Drop

Java: Vererbung. Teil 3: super()

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

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

Programmiertechnik GUI Programmierung mit Java Swing

Java Projekt: Tic Tac Toe + GUI

Objektorientierte Programmierung

Programmierkurs Java

Universität VL 13 VL 13 GUI-Programmierung mit Swing Osnabrück Informatik B - Objektorientierte Programmierung in Java Vorlesung 13: GUI 3: Swing

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Grafische Benutzeroberflächen

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

Java GUI Entwicklung mit Swing

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

Remote Method Invocation

Grafische Benutzeroberflächen

Schritt 1 - Ein Spielfeld

Grafische Benutzeroberflächen

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Große Übung Praktische Informatik 1

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

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

Graphische Benutzungsoberflächen

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

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

Innere Klassen in Java

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

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

Programmieren in Java

04 - Actions. Actions

Programmieren in Java

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

Java Lab 2006/12/13 Client

Musterlösungen zur Klausur Informatik 3

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

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

Klausur: Java (Liste P)

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

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

Objektorientiertes Programmieren. Übungsblatt 5

Aufbau einer typischen Java-Datei

Ein Manager mit CardLayout layout/cards.java

Transkript:

und mein Button JButton 1

javax.swing Klassenbibliothek für Oberflächen weitestgehend selbst in Java programmiert sehr flexibel ziemlich langsam Layoutmanager und Eventhandling werden von awt übernommen Ist ansatzweise nach dem modell-view-controller pattern implementiert, wobei view und controller meist zusammengefasst sind. 2

Model - View - Controller Model Implementiert das Datenmodell Zustandsinformationen Datenwerte Applikationscode View Darstellung der im Modell verwalteten Daten/Zustände Darstellung durch geeignete paint Methode Darstellung durch Benutzung geeigneter GUI Components Es kann mehrere Views geben Holt Daten View Zeigt die Daten aus Modell an Sendet Benutzereingaben Modell Liefert die Daten Informiert über Anderungen Informiert über Änderungen Informiert über Eingaben Ändert die Daten Controller Implementiert das Verhalten Setzt Benutzereingaben in das Modell um Controller Zuständig für das Eventhandling Applikationscode 3

Swing Components Container Layoutmanager JComponents Menuelemente JApplet BoxLayout JButton JMenu JDialog (OverlayLayout) JCheckBox JMenuBar JFrame JButtonGroup JComboBox JMenuItem (JLayeredPane) (SpringLayout) JColorChooser JPopupMenu JPanel (JViewPortLayout) JEditorPane JToolBar JOptionPane JFileCooser (JWindow) JLabel Box JList JDesktopPane JPasswordField JInternalFrame JProgressBar JScrollPane JRadioButton JSplitPane JScrollBar JTabbedPane JTextArea (JRootPane) JTextField (JViewPort) JTextPane JTable JTree JFormattedTextField JSpinner 4

Components JButton, JTextField, JTextArea, JLabel, JCheckBox, JScrollBar entsprechen in ihrer wesentlichen Funktionalität den Komponenten von awt. Scrollbars werden an JList und JTextArea nicht automatisch ergänzt, ein JScrollPane ist erforderlich JLabel und JButton können Text und Icons enthalten, die Anordnung/Ausrichtung ist sehr variabel 5

Button/Label JLabel l=new JLabel("JAVA:", new ImageIcon("java.png"), SwingConstants.LEFT); l.sethorizontaltextposition(swingconstants.right ); add(l); JButton b=new JButton("Suse", new ImageIcon("gnome-suse.png")); b.sethorizontaltextposition(swingconstants.right ); add(b) ; Button mit Icon Label mit Icon 6

JComboBox b; JComboBox, ersetzt Choice von awt public JCombo() Vector<String> v=new Vector<String>(); v.add("klein Bubi"); v.add("klein Erna"); v.add("frau Pumeier"); b=new JComboBox(v); add(b) ; b.additemlistener(new ItemListener() public void itemstatechanged(itemevent e) System.out.println((String)(b.getSelectedItem())); ); 7

JColorChooser b; JColorChooser public JColor() setlayout(new BorderLayout()); b=new JColorChooser(); add(b,borderlayout.center) ; Button Bget=new Button("Get Color"); add(bget,borderlayout.south); Bget.addActionListener(new ActionListener() public void actionperformed(actionevent e) System.out.println ("Color: "+b.getcolor()); ); 8

JEditorPane JEditorPane p=new JEditorPane(new URL(args[0])); JScrollPane x=new JScrollPane(p); p.seteditable(false); p.addhyperlinklistener(new Hyperactive()); class Hyperactive implements HyperlinkListener public void hyperlinkupdate(hyperlinkevent e) if (e.geteventtype() == HyperlinkEvent.EventType.ACTIVATED) JEditorPane pane = (JEditorPane) e.getsource(); if (e instanceof HTMLFrameHyperlinkEvent) HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e; HTMLDocument doc = (HTMLDocument)pane.getDocument(); doc.processhtmlframehyperlinkevent(evt); else try pane.setpage(e.geturl()); catch (Throwable t) t.printstacktrace(); 9

public class Progress extends JPanel implements Runnable int count=0; JProgressBar b; Thread t=new Thread(this); public Progress() b=new JProgressBar(JProgressBar.HORIZONTAL,0,100); b.setstringpainted(true); add(b) ; public static void main(string args[])throws Exception... new BufferedReader(new InputStreamReader(System.in)).readLine(); p.t.start(); Eine Eingabe, um zu warten Start des Threads JProgressBar public void run() while (true) try Thread.sleep(count*20); catch(exception e) count+=10; b.setvalue(count); b.setstring(""+count+"%"); System.out.println(count); if (count==100) return; 10

JList JList gehört zu den JComponents, die sich eines expliziten Datenmodells bedienen Es gibt eine Reihe Standardimplementationen, die es erlauben eine Listbox aus einem Objektarray oder einem Vector Objekt zu erzeugen. Liegen die Daten jedoch in einem proprietären Format vor, vielleicht in Form einer sortierten doppelt verketteten Ringliste vom Beck, so kann man ein Datenmodell dafür implementieren. 11

Das Datenmodell class mylistmodel extends AbstractListModel public int getsize() mydata S; int i; for(i=0, S=(myData)L.getFirst(); S!=null; S=(myData)L.getNext(),i++); return i; public Object getelementat(int index) mydata S; return (mydata)l.getindexed(index); 12

Die Daten in der Liste class mydata extends Object implements sortableobject public mydata(string Data) this.data=data; public String tostring() return Data; public int compareto(sortableobject o) return Data.compareTo(((myData)o).getData()); public String getdata()return Data; private String Data; Die Daten, die von der Liste verwaltet werden, sind vom Typ sortableobject, einem Interface mit der Methode compareto. Diese Daten kann die Klasse beck.beckslist.beckslist.class dann sortiert verwalten. 13

Constructor der App public ListTest(String args[]) setlayout(new BorderLayout()); int i; L=new beckslist(); for (i=0; i<args.length;i++) L.insertSort(new mydata(args[i])); JL=new JList(new mylistmodel()); add(new JScrollPane(JL),BorderLayout.CENTER); add(t,borderlayout.north); T.addActionListener(new ActionListener() public void actionperformed(actionevent e) L.insertSort(new mydata(t.gettext())); JL.setModel(new mylistmodel()); ); 14

Die main-funktion public static void main(string args[]) ListTest T=new ListTest(args); JFrame F=new JFrame(); F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); F.getContentPane().add(T); F.setVisible(true); F.pack(); 15

JTable class mytablemodel extends AbstractTableModel String[] columnnames=" Name ",...," Phone ",""; int nrow; Object[][] data; Address A; mytablemodel()... Constructor füllt die Adressen in das Objektarray public int getrowcount()return data.length; public int getcolumncount()return data[0].length; public Object getvalueat(int row, int col) return data[row][col]; public String getcolumnname(int ColIdx) return columnnames[colidx]; ; public Class getcolumnclass(int ColIdx) return data[0][colidx].getclass(); 16

Erzeugen der JTable mytablemodel model=new mytablemodel(); Tbl =new JTable(model); S=new JScrollPane(Tbl); add(s); 17

JTree JTree aus Collection import javax.swing.*; import javax.swing.tree.*; import java.util.*; public class HashHandleTree public static void main(string[] args) JFrame f = new JFrame("Tree from a Hashtable"); Hashtable<String,String> h = new Hashtable<String,String>(); int i=0; for(string s:args) h.put(s,""+(i++)); JTree t = new JTree(h); t.putclientproperty("jtree.linestyle", "Angled"); t.setrootvisible(true); t.setshowsroothandles(false); f.add(t); f.pack(); f.setvisible(true); 18

JTree & XML JTree T; DefaultMutableTreeNode Curr; xmlsax(string xmlfilename) Curr=new DefaultMutableTreeNode("XML: "+xmlfilename); T=new JTree(Curr);... // preparing XML-Reader 19

XML sax Contenthandler (Ausschnitt) class mycontenthandler implements org.xml.sax.contenthandler public void characters(char[] ch, int start, int length) if (ch[start]!='\n'&&length>=1) DefaultMutableTreeNode pi= new DefaultMutableTreeNode("Chars: "+new String (ch,start,length)); Curr.add(pi); public void endelement(string namespaceuri, String localname, String qname) Curr=(DefaultMutableTreeNode)Curr.getParent(); public void startelement(string namespaceuri, String localname, String qname, Attributes atts) DefaultMutableTreeNode pi=new DefaultMutableTreeNode("Element "+localname); Curr.add(pi); Curr=pi;... Das neue Blatt wird neuer aktueller Zweig neues Blatt erzeugen und anhängen an akt. Zweig Hier geht s wieder zurück neues Blatt erzeugen 20

teilweise aufgeklappter Baum 21

Container Container, die weitestgehend denen von awt entsprechen, allerdings über darüber hinaus gehende Funktionalität verfügen. JApplet JFrame JPanel JDialog JFrame forderte bei Versionen bis java 5 den Aufruf getcontentpane() vor add und setlayout. f.getcontentpane().setlayout(new BorderLayout()); 22

JOptionPane Erzeugt eine zusammengesetzte Komponente aus bis zu 4 Bestandteilen Über spezielle Methoden wird diese Komponente in einen Dialog eingebettet und angezeigt IC ON message input option buttons String axis = JOptionPane.showInputDialog("Please input x or y"); 23

Weitere Beispiele JOptionPane JOptionPane.showMessageDialog(this, "alert", "alert", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(this, "information","information", JOptionPane.INFORMATION_MESSAGE); JOptionPane o=new JOptionPane(); add(o); 24

Box Kann horizontal oder vertikal ausgerichtet sein Ordnet die Komponenten von links nach rechts oder oben nach unten an Abstände können über spezielle Abstandskomponenten eingefügt werden: RigedArea (zweidimensional) Struts (HorizontalStut/VerticalStrut) Glue (restlicher Platz wird aufgeteilt) if (axis.equals("x") axis.equals("x")) setlayout(new BoxLayout(this,BoxLayout.X_AXIS)); else setlayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 25

import java.awt.*; import javax.swing.*; import java.awt.event.*; public class BoxLayoutPanel extends JPanel JButton b1=new Jbutton("Max");... JButton b5=new JButton("Der große Rest"); JSpinner S= new JSpinner( new SpinnerNumberModel(20, 0, 100, 10)); public BoxLayoutPanel() String axis = JOptionPane.showInputDialog("Please input x or y"); setfont(new Font("System", Font.PLAIN, 24)); S.setFont(new Font("System", Font.PLAIN, 24)); if (axis.equals("x") axis.equals("x")) setlayout(new BoxLayout(this,BoxLayout.X_AXIS)); else setlayout(new BoxLayout(this,BoxLayout.Y_AXIS)); add(b1);add(box.createrigidarea(new Dimension(10,10)));... add(s); add(box.createrigidarea(new Dimension(10,10))); public static void main(string args[])... 26

JSplitPane / JDesktopPane JDesktoPane JInternalFrame JSplitPane JInternalFrame 27

JSplitPane JSplitPane jsplitpane1 = new JSplitPane(); jsplitpane1.add(desk, JSplitPane.RIGHT); jsplitpane1.add(jtree1, JSplitPane.LEFT ); Oder JSplitPane jsplitpane1 = new JSplitPane( JsplitPane.HORIZONTAL_SPLIT, Comp1, Comp2) ); geht aus der API-Doku nicht hervor Erzeugung JSPlitPane Mit 2 Komponenten JSplitPane jsp=new JSplitPane(int neworientation) neworientation - JSplitPane.HORIZONTAL_SPLIT JSplitPane.VERTICAL_SPLIT addimpl: fügt eine Component in JSplitPane ein protected void addimpl(component comp, Object constraints, int index) 28

JDesktopPane JDesktopPane Desk=new JDesktopPane(); JInternalFrame F=new JInternalFrame(Title,true,true,true); JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable) 29

import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Tabbed extends JPanel public Tabbed(JFrame f)throws Exception JTabbedPane T=new JTabbedPane(); T.addTab("Image",new myimagelines("rose.jpg",f)); T.addTab("Text", new FileViewer("rose.txt")); T.addTab("Browser",new TestEditorPane( JTabbedPane "http://www.welt-der-rosen.de/rosged/ronsard_geb.h add(t); public static void main(string args[])throws Exception JFrame f=new JFrame("FlowLayoutPanel"); Tabbed p=new Tabbed(f); f.add(p,borderlayout.center);... 30

31