ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
627
627
EMPFEHLEN
-
14.11.10 18:35 #1
- Registriert seit
- Nov 2010
- Beiträge
- 6
Hi,
ich komme mit der JTable nicht weiter. Wenn es mal klappt, soll eine Tabelle entstehen. Die je nach Anforderung in der Zeilengröße sich anpasst.
Als Beispiel habe ich bei Oracle folgende Webseite gefunden:
http://download.oracle.com/javase/tu...nts/table.html
Unter dem Abschnitt "Creating a Table Model" findet sich annähernd was ich brauche. Da wird die Tabelle mit einem Objekt initialisiert. Das sieht folgendermaßen aus:
private Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
Meine Frage ist nun, wie kann ich selber so ein Objekt erzeugen? Ich weiß im Voraus nicht wieviele Zeilen ich habe, Spalten sind nur drei. Jede Spalte hätte einen anderen Objekttyp, was aber wohl egal wäre.
Was vielleicht noch wichtig ist, das sich die Tabelle sehr oft ändern soll. Der Typ bleibt gleich, aber die in den Zellen enthaltenen Objekte werde sich ändern.
Wenn jemand eine Idee hätte wie man vorgehen könnte, wäre es super!
-
Und wann genau hast du denn die Daten fuer deine Tabelle? Besteht nicht die Moeglichkeit die Tabelle erst zu erstellen sobald du die Daten hast?
Ansonsten vielleicht hilft dir dies? http://www.tutorials.de/swing-java2d...ml#post1540438Geändert von MiMi (15.11.10 um 15:24 Uhr)
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
-
Hatte das Problem ebenfalls aber mit ein paar kleinen Änderungen/Erweiterungen an der JTable und deren Model kann man dieses Problem aber recht einfach lösen.
JTable
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
public MyTable() { ... setFillsViewportHeight(true); ... } /** * Fügt der Tabelle eine leere Zeile hinzu */ public void addEmptyRow() { addRow((Object[]) null); } /** * Fügt der Tabelle eine neue Zeile mit Daten hinzu * * @param pData * Inhalt */ public void addRow(final Object[] pData) { model.addRow(pData); } /** * Fügt der Tabelle eine neue Spalte hinzu * * @param pTitle * Überschrift * @param pClazz * Typ der Inhalte */ public void addColumn(final String pTitle, final Class<?> pClazz) { model.addColumnClass(pClazz); setDefaultRenderer(pClazz, renderer); TableColumn col = new TableColumn(model.getColumnCount()); col.setHeaderValue(pTitle); addColumn(col); model.addColumn(pTitle); }
Model:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
private List<Class<?>> columnClasses = new ArrayList<Class<?>>(); /** * Fügt dem Model die Klasse einer neuen Spalte hinzu * * @param pClazz * Klasse des Spalteninhaltes */ public void addColumnClass(final Class<?> pClazz) { columnClasses.add(pClazz); } /** * {@inheritDoc} */ public Class<?> getColumnClass(final int pCol) { return columnClasses.get(pCol); } /** * Entfernt eine Klasse einer bestimmten Spalte wieder aus dem Model * * @param pCol * Spalte der gewünschten Klasse * @return Klasse des Spalteninhaltes */ public Class<?> removeColumnClass(final int pCol) { return columnClasses.remove(pCol); }
Das sollten alle wichtigen Funktionen sein. Bei Fragen helfe ich gerne weiterGeändert von Tsunamii (16.11.10 um 16:04 Uhr)
-
16.11.10 20:45 #4
- Registriert seit
- Nov 2010
- Beiträge
- 6
Hey Mimi,
ich habe die Daten noch nicht, wenn die Gui aufgebaut wird. Je nach Selektiertem Datensatz, soll die JTable gefüllt werden. Oder später, wenn ich weiter gekommen bin, auch geändert werden.
Danke auch an Tsunami, dein Code sieht auf den ersten Blick gut aus. Aber ich hatte die lezten Tage so viele Fehlermeldungen, wegen Problemen mit ArrayGrenzen. Das ich es aufgegeben habe selbst ein Modell zu implementieren.
Was ich jetzt herausgefunden habe, was eigentlich auch am einfachsten scheint. Das ist die Verwendung des DefaultTableModell. Keine extra Klasse, sondern dieses Modell verwenden. Die Daten werden in diesem Modell als Vektor organisiert. Was Dynamisch ist und bei Änderung auch die Oberfläche aktualisiert.
Allerdings habe ich Eingaben von ca. 50 Wörtern je Feld. Das ist mit der jetzigen Grundlage nicht so Ansehnlich. Die Texte werden abgeschnitten, einen Zeilenumbruch gibt es wohl nicht.
na egal, auch damit gibt es kein vernünftiges Rendering....Code :1 2 3 4 5 6 7 8 9 10
public class TwoLinesCellRenderer extends JTextArea implements TableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText(value.toString()); // Value kann String mit \n enthalten return this; } };Geändert von zitro-java (16.11.10 um 20:47 Uhr)
Ähnliche Themen
-
JTable dynamisch füllen
Von DonAqua im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 18.02.08, 16:09 -
JTable dynamisch befüllen
Von Myar im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 14.12.07, 15:22 -
JTable dynamisch erzeugen
Von Matze82 im Forum JavaAntworten: 6Letzter Beitrag: 19.09.05, 14:48 -
JTable dynamisch aufbauen
Von Matze82 im Forum JavaAntworten: 3Letzter Beitrag: 09.06.05, 14:26 -
JTable dynamisch füllen.
Von Phil_adelphia im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 8Letzter Beitrag: 10.02.05, 10:06





Zitieren
Login





