JTable. W. Lang HWR Berlin, SS

Ähnliche Dokumente
1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Repetitorium Informatik (Java)

Javakurs für Anfänger

Java: Vererbung. Teil 3: super()

Javakurs zu Informatik I. Henning Heitkötter

Typumwandlungen bei Referenztypen

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Swing Lernen am Code Teil 1

Einstieg in die Informatik mit Java

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

Programmieren für Wirtschaftswissenschaftler SS 2015

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

Kapitel 6. Vererbung

Einführung in die Java- Programmierung

Kapitel 6. Vererbung

Theorie zu Übung 8 Implementierung in Java

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

WPF Steuerelemente Listbox, ComboBox, ListView,

Übung 1: Object Inspector

Kapitel 6. Vererbung

Probeklausur: Programmierung WS04/05

Swing :Komponenten I (Teil 2)

Propädeutikum zur Programmierung

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Algorithmen und Datenstrukturen

Programmieren lernen mit Groovy Graphische Oberflächen GUIs (Graphical User Interfaces)

1 Polymorphie (Vielgestaltigkeit)

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Selbsteinstufungstest Vorkurs Programmieren

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

von Anja Austermann Drag and Drop

Probeklausur: Programmierung WS04/05

Abschnitt 9: Schnittstellen: Interfaces

Arrays Fortgeschrittene Verwendung

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Programmierkurs Java

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Programmieren in Java

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Graphische Benutzungsoberflächen

Praktikum aus Programmierung Dr. Michael Hahsler (WS 05/06) Projekt: Würfelpoker

Einführung in die Programmierung 1

Einführung in die Programmierung für Wirtschaftsinformatik

AuD-Tafelübung T-B5b

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Assoziation und Aggregation

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Übersicht. Vorstellung des OO-Paradigmas

3 Objektorientierte Konzepte in Java

Studentische Lösung zum Übungsblatt Nr. 7

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

Einführung in die Java- Programmierung

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Programmierkurs Java

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einbindung der Tastatur

Programmierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck

5.4 Klassen und Objekte

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Inhalt: Version 1.7.5

6 Speicherorganisation

4 Codierung nach Viginere (Lösung)

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Visual C# 2005 Kochbuch

Projekt AGB-10 Fremdprojektanalyse

Wie ich lernte die API zu lieben. 19. März sic[!]sec GmbH Industriestraße Gröbenzell

Gebundene Typparameter

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

Einführung in die Programmierung Vorlesungsprüfung

Programmieren I. Kapitel 8. Vererbung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Java I Vorlesung 6 Referenz-Datentypen

Javakurs für Anfänger

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Javakurs für Anfänger

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

3 Objektorientierte Konzepte in Java

Algorithmen und Programmierung II

C# im Vergleich zu Java

5.1 Bestehende Projekte bearbeiten Neue Projekte erstellen 85

Einstieg in die Informatik mit Java

WhiteStarUML Tutorial

Überschreiben von Methoden

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Arbeitsblatt 5 EAD II NetBeans

Innere Klassen in Java

Objektorientierte und Funktionale Programmierung SS 2014

Android will doch nur spielen. Java Übung

Software Engineering Klassendiagramme Einführung

Java Einführung Klassendefinitionen

Testklausur 2 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Factory Method (Virtual Constructor)

Java Einführung Methoden in Klassen

Transkript:

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 den bisher besprochenen Swing- Komponenten ist die JTable deutlich komplexer Besonders leistungsfähig ist eine JTable, wenn sie eine eigene Klasse zur Verwaltung der Daten anlegen (Model) Das Erstellen einer JTable im GUI-Editor ist teilweise etwas umständlich. Häufig ist es besser, den Java-Code direkt zu editieren Sollte eine neu angelegte Tabelle nicht sichtbar sein, überprüfen sie die Werte der Eigenschaft Bounds W. Lang HWR Berlin, SS 2014 2

Eine einfache Tabelle JTable kennt mehrere Konstruktoren zur Generierung einer Tabelle. Im einfachsten Fall wird lediglich die Anzahl benötigter Zeilen und Spalten als Parameter übergeben, z. B.: JTable tbldemo = new JTable( 5, 5 ); Die Verwaltung der Daten erfolgt hier in einem vordefinierten Tabellenmodell, d. h. durch ein Objekt der Klasse DefaultTableModel, das beim Erstellen der Tabelle automatisch mit angelegt wird Sollen Daten aus dem Programm heraus geändert werden, muss zuerst eine Referenz auf das Tabellenmodell erzeugt werden, z. B.: TableModel tm = tbldemo.getmodel(); W. Lang HWR Berlin, SS 2014 3

Eine einfache Tabelle Mit der Methode setvalueat() kann anschließend ein Wert im Model gesetzt werden, z. B.: tm.setvalueat( "Test", 1, 3 ); Analog kann mit getvalueat() ein Wert ausgelesen werden, z. B.: String s = (String) tm.getvalueat( 1, 3 ); Der Cast ist erforderlich, da getvalueat() keinen String sondern einen Wert vom Typ Object zurück gibt Grundsätzlich kann man auch setvalueat() und getvalueat() von JTable verwenden. Man macht sich dann aber abhängig von Spaltenverschiebungen durch den Anwender Wird ein Wert im Tabellenmodell (Model) geändert, wird die Tabelle (View) darüber informiert (TableModelEvent) und aktualisiert sich selbständig W. Lang HWR Berlin, SS 2014 4

Tabelle mit Scrollbar Können aus Platzgründen nicht alle Zellen angezeigt werden, benötigt die Tabelle Scrollbars Scrollbars werden nicht von der Tabelle selbst, sondern durch die Klasse JScrollPane zur Verfügung gestellt. Dazu erstellen Sie im GUI-Editor zuerst ein Scrollpane und erzeugen die Tabelle dann innerhalb des Scrollpanes Die Tabelle erhält dadurch auch einen Header, dessen Spaltennamen mit Buchstaben vordefiniert sind und der das Verschieben der Spalten durch den Anwender ermöglicht Ob ein horizontaler Scrollbar erzeugt wird oder die Spaltenbreiten angepasst werden, kann über die Tabelleneigenschaft autoresizemode gesteuert werden W. Lang HWR Berlin, SS 2014 5

Tabelle Initialisierung mit Array Eine Tabelle kann auch angelegt werden, indem an den Konstruktor ein zweidimensionales Array vom Typ Object und ein eindimensionales String-Array für die Überschriften übergeben wird. Beispiel: String[] col = { "Nr", "Name" }; Object[][] cells = { }; {1, "Drucker"}, {2, "Monitor"} JTable tbl = new JTable( cells, col ); Sollen die Daten in den Zellen anschließend aus dem Java-Code heraus geändert werden, muss setvalueat() verwendet werden (Nicht direkt ändern! Warum?) W. Lang HWR Berlin, SS 2014 6

Tabelle Spaltenbreite ändern Um die Spaltenbreite zu ändern kann die Klasse TableColumn genutzt werden TableColumn repräsentiert alle Attribute einer Tabellenspalte. Das Objekt für eine bestimmte Spalte erhält man durch TableColumn tc = tbl.getcolumnmodel().getcolumn( colindex ); Die erste Spalte lässt sich jetzt beispielsweise halbieren mit tc.setpreferredwidth( tc.getpreferredwidth() / 2 ); Analog lassen sich auf diese Weise weitere Spaltenattribute ändern W. Lang HWR Berlin, SS 2014 7

Tabelle mit AbstractTableModel Die Erzeugung einer Tabelle mit den Konstruktoren JTable(int, int) und JTable( Object[][], String[]) ist unflexibel und nur für einfache Tabellen geeignet Für anspruchsvollere Anwendungen, insbesondere in Verbindung mit Datenbanken, eignet sich die Variante mit selbst erstelltem Tabellenmodell besser Dabei wird eine Klasse angelegt, die AbstractTableModel erweitert und mindestens folgende drei Methoden implementiert: class MyModel extends AbstractTableModel { public int getrowcount(){...} public int getcolumncount(){...} public Object getvalueat(int r, int c ){...} } W. Lang HWR Berlin, SS 2014 8

Beispiel für Tabelle mit AbstractTableModel Klasse MyModel: class MyModel extends AbstractTableModel { public int getcolumncount(){ return 10; } } public int getrowcount() { return 10; } public Object getvalueat( int row, } int col ) { return new Integer( row * col ); Klasse MyFrame: JTable tbl = new JTable( new MyModel() ); JScrollPane scr = new JScrollPane( tbl ); W. Lang HWR Berlin, SS 2014 9

Weitere Methoden von AbstractTableModel Soll eine eigene Kopfzeile für die Tabelle erstellt werden, ist zusätzlich die Methode public String getcolumnname( int c ){...} zu implementieren Ob eine Zelle editierbar ist, wird über die Methode public boolean iscelleditable( int row, int col ){...} gesteuert Mit den Methoden firetabledatachanged() und firetablecellupdated() der Klasse AbstractTableModel wird die Tabelle (view) darüber informiert, dass sich Daten geändert haben. Sie fragt darauf hin die geänderten Daten neu ab W. Lang HWR Berlin, SS 2014 10

AbstractTableModel aktualisieren Sollen Modelldaten geändert werden, muss das Tabellenmodell um die Methode setvalueat() erweitert werden. Beispiel: public void setvalueat( Object obj, int row, int col ) { zellen[ row ][ col ] = obj; } W. Lang HWR Berlin, SS 2014 11