SWT Tabelle mit Werten befüllen

calmar

Mitglied
hi,

hier einmal mein code:

Java:
protected void createTable(Composite parent) {

		Section engagementSection = this.toolkit.createSection(parent,
				Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE
						| Section.EXPANDED);
/*		engagementSection.addExpansionListener(new ExpansionAdapter() {
			@Override
			public void expansionStateChanged(ExpansionEvent e) {
				KuenstlerEditor.this.form.reflow(true);
			}
		});*/
		engagementSection.setText("Veranstaltungen");
		engagementSection.setLayoutData(new GridData(GridData.FILL_BOTH));

		this.tableViewer = new TableViewer(engagementSection, SWT.BORDER
				| SWT.FULL_SELECTION);
		this.tableViewer.getTable().setLayoutData(
				new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
		TableLayout layout = new TableLayout();
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		this.tableViewer.getTable().setLayout(layout);

		this.tableViewer.getTable().setLinesVisible(true);
		this.tableViewer.getTable().setHeaderVisible(true);

		this.tableViewer.setContentProvider(new ArrayContentProvider());
		IVeranstaltungService ivs = new VeranstaltungService();
		tableViewer.setInput(ivs.findAllVeranstaltung().toArray());
		
		
		this.tableViewer.setLabelProvider(new ITableLabelProvider() {

			@Override
			public Image getColumnImage(Object arg0, int arg1) {
				return null;
			}

			@Override
			public String getColumnText(Object element, int index) {
				Veranstaltung e = (Veranstaltung) element;
				switch (index) {
				case 0:
					if (e != null) {
						return e.getBezeichnung();
					} else {
						return "";
					}
				case 1:
					if (e != null) {
						return e.getKategorie();
					} else {
						return "";
					}
				case 2:
					if (e != null) {
						return e.getSpracheton();
					} else {
						return "";
					}
				case 3:
					if (e != null) {
						return e.getHinweis();
					} else {
						return "";
					}
				case 4:
					if (e != null) {
						return e.getFreigabe();
					} else {
						return "";
					}
				case 5:
					if (e.getDauer() == null) {
						return "";
					} else {
						return e.getDauer().toString();
					}
				}
				return null;
			}

			@Override
			public void addListener(ILabelProviderListener listener) {
				// nothing to do
			}

			@Override
			public void dispose() {
				// nothing to do
			}

			@Override
			public boolean isLabelProperty(Object arg0, String arg1) {
				return true;
			}

			@Override
			public void removeListener(ILabelProviderListener arg0) {
				// nothing to do
			}
		});

		TableColumn colBezeichnung = new TableColumn(this.tableViewer
				.getTable(), SWT.LEFT);
		colBezeichnung.setText("Bezeichnung");
		TableColumn colKategorie = new TableColumn(this.tableViewer.getTable(),
				SWT.LEFT);
		colKategorie.setText("Kategorie");
		TableColumn colSpracheton = new TableColumn(this.tableViewer.getTable(),
				SWT.LEFT);
		colSpracheton.setText("Sprache");
		TableColumn colHinweis = new TableColumn(this.tableViewer.getTable(),
				SWT.LEFT);
		colHinweis.setText("Hinweis");
		TableColumn colFreigabe = new TableColumn(this.tableViewer.getTable(),
				SWT.LEFT);
		colFreigabe.setText("Freigabe");
		TableColumn colDauer = new TableColumn(this.tableViewer.getTable(),
				SWT.LEFT);
		colDauer.setText("Dauer");

		this.toolkit.adapt(this.tableViewer.getTable(), true, true);
		engagementSection.setClient(this.tableViewer.getTable());
	}
}

mein problem ist, dass nur in der ersten tabellenspalte die werte stehen, d.h. in der Spalte "Bezeichnung".

Die übrigen Spalten sind leer (d.h. kategorie, sprache, hinweis usw...). ich habe auch noch nie mit JFace gearbeitet - freue mich über jeden hinweis

:)

danke im vorhinein!
 

Wildcard

Top Contributor
Einer Tabelle darf man kein Layout setzen (auch nicht wenn das Ding TableLayout heißt ;)).
Die größe musst du direkt auf der Column setzen.
 

calmar

Mitglied
hi,

vielleicht bin ich zu doof den hinweis zu verstehen ???:L! (Das Beispiel ist etwas anders als in meinem ersten Post, aber das gleiche Problem):

Hier mein Beispiel:

Java:
/**
	 * Hier wird die Tabelle mit den Auffuehrungen zu dieser Veranstaltung erzeugt. 
	 * @param parent
	 */
	protected void createTableAuffuehrungen(Composite parent) {

		Section auffuehrungSection = this.toolkit.createSection(parent,
				Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE
						| Section.EXPANDED);
		auffuehrungSection.addExpansionListener(new ExpansionAdapter() {
			@Override
			public void expansionStateChanged(ExpansionEvent e) {
				VeranstaltungEditor.this.form.reflow(true);
			}
		});
		
		Composite left = this.toolkit.createComposite(auffuehrungSection);
		left.setLayout(new GridLayout(2, false));

		auffuehrungSection.setText("Auff�hrungen");
		auffuehrungSection.setLayoutData(new GridData(GridData.FILL_BOTH));

		this.tableViewerAuffuehrung = new TableViewer(left, SWT.BORDER
				| SWT.FULL_SELECTION);
	
		this.tableViewerAuffuehrung.getTable().setLayoutData(
				new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
/*		TableLayout layout = new TableLayout();
		layout.addColumnData(new ColumnWeightData(20, 100, true));
		layout.addColumnData(new ColumnWeightData(20, 100, true));
		layout.addColumnData(new ColumnWeightData(15, 100, true));
		layout.addColumnData(new ColumnWeightData(25, 100, true));
		layout.addColumnData(new ColumnWeightData(28, 100, true));
		
		this.tableViewerAuffuehrung.getTable().setLayout(layout)*/;
		this.tableViewerAuffuehrung.getTable().setLinesVisible(true);
		this.tableViewerAuffuehrung.getTable().setHeaderVisible(true);
		
		IAuffuehrungService avs = new AuffuehrungService(); 
		Auffuehrung auffuehrung = new Auffuehrung(); 
		auffuehrung.setVeranstaltung(veranstaltung);
		List<Auffuehrung> foundAuffuehrung = avs.findByAuffuehrung(auffuehrung);
		
		
		for (int i = 0; i < foundAuffuehrung.size(); i++){
			log.trace(foundAuffuehrung.get(i)); 
		}
		
		this.tableViewerAuffuehrung.setContentProvider(new ArrayContentProvider());
		tableViewerAuffuehrung.setInput(foundAuffuehrung.toArray());
		this.tableViewerAuffuehrung.setLabelProvider(new ITableLabelProvider() {

			@Override
			public Image getColumnImage(Object arg0, int arg1) {
				return null;
			}

			@Override
			public String getColumnText(Object element, int index) {
				
				Auffuehrung auffuehrung = (Auffuehrung) element;
				
				switch (index) {
				
				case 0:
					if (auffuehrung.getDatumuhrzeit() != null) {
						return auffuehrung.getDatumuhrzeit().toString();
					} else {
						return "";
					}
				case 1:
					if(auffuehrung.isStorniert())
					return "true";
					else
						return "false";
				case 2:
					Integer.toString(auffuehrung.getPreis());
				case 3:
					if (auffuehrung.getSaal() == null) {
						return "";
					} else {
						return auffuehrung.getSaal().getBezeichnung();
					}
				case 4:
					if (auffuehrung.getHinweis() == null) {
						return "";
					} else {
						return auffuehrung.getHinweis();
					}
				}
				return null;
			}

			@Override
			public void addListener(ILabelProviderListener listener) {
				// nothing to do
			}

			@Override
			public void dispose() {
				// nothing to do
			}

			@Override
			public boolean isLabelProperty(Object arg0, String arg1) {
				return true;
			}

			@Override
			public void removeListener(ILabelProviderListener arg0) {
				// nothing to do
			}
		});

		TableColumn colDatumUhrzeit = new TableColumn(this.tableViewerAuffuehrung.getTable(),
				SWT.LEFT);
		colDatumUhrzeit.setWidth(250);
		colDatumUhrzeit.setText("Datum und Uhrzeit");
		TableColumn colStorniert = new TableColumn(this.tableViewerAuffuehrung.getTable(),
				SWT.LEFT);
		colStorniert.setWidth(150);
		colStorniert.setText("Storniert");
		TableColumn colPreis = new TableColumn(this.tableViewerAuffuehrung.getTable(),
				SWT.LEFT);
		colPreis.setWidth(150);
		colPreis.setText("Preis");
		TableColumn colSaal = new TableColumn(this.tableViewerAuffuehrung.getTable(),
				SWT.LEFT);
		colSaal.setWidth(150);
		colSaal.setText("Saal");
		TableColumn colHinweis = new TableColumn(this.tableViewerAuffuehrung.getTable(),
				SWT.LEFT);
		colHinweis.setWidth(250);
		colHinweis.setText("Hinweis");


		this.toolkit.adapt(this.tableViewerAuffuehrung.getTable(), true, true);
		auffuehrungSection.setClient(left);
		
	}

Jetzt habe ich die Breite direkt auf der Column gesetzt. Es wird jedoch in der Tabelle nur "Datum und Uhrzeit" angezeigt, alle anderen Spalten sind leer!

Will mir eigentlich ersparen extra einen ContenProvider zu schreiben, das muss doch auch einfach mit einem ArrayContentProvider() funktionierten - oder liege ich das falsch?

lg
 

Wildcard

Top Contributor
Korrektur wegen des Layouts, ich war gedanklich bei einem anderen Layout, das war schon alles ok :oops:

Ich würde mal vermuten das dein Problem hier liegt:
Java:
        this.tableViewerAuffuehrung.setContentProvider(new ArrayContentProvider());
        tableViewerAuffuehrung.setInput(foundAuffuehrung.toArray());
        this.tableViewerAuffuehrung.setLabelProvider(new ITableLabelProvider() {
Der LabelProvider muss gesetzt werden bevor du den Input setzt. Mich wundert allerdings das du nicht sofort eine Exception bekommst, denn eigentlich sollten StructuredViewer eine Exception werfen wenn kein Label/ContentProvider gesetzt ist.
 

calmar

Mitglied
hi,

das war es auch nicht.

kann es sein, dass der ArrayContentProvider nur funktioniert wenn man ein Set übergibt?

hab bei einem kollegen, der etwas ähnliches zu programmieren hatte, das angesehen. der übergibt ein set und es funktioniert eigentlich einwandfrei...

ich hab mir jetzt für mein problem doch einen eigenen ContentProvider geschrieben, und es so gelöst... aber ich wollte halt gerne code sparen :)

mfg und nochmals vielen dank für die antworten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JavaFX Tabelle zeilenweise mit Werten füllen und an Container anpassen AWT, Swing, JavaFX & SWT 23
F JavaFX Tabelle mit gespeicherten Eingabe Werten AWT, Swing, JavaFX & SWT 8
W Kleine Sub-Tabelle in SpreadsheetView-Zelle anzeigen AWT, Swing, JavaFX & SWT 9
K Tabelle zu Datenbank hinzufügen / Apache Derby AWT, Swing, JavaFX & SWT 7
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
T Zelle- und die Zeile-Farbenwechsel bei der Selektion in der Tabelle AWT, Swing, JavaFX & SWT 4
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
L Dynamischer Aufbau einer Tabelle über Objekte AWT, Swing, JavaFX & SWT 2
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
MrSnake Tabelle nach 2 Strings Filtern AWT, Swing, JavaFX & SWT 3
D Filter in Tabelle Sql AWT, Swing, JavaFX & SWT 6
M JavaFX Tabelle flexibler Länge AWT, Swing, JavaFX & SWT 3
T Swing Tabelle mit Button - Anzeigefehler nach Zeile entfernen AWT, Swing, JavaFX & SWT 1
JavaMachtMichFertig JavaFX Gui - Löschbutton in Tabelle anzeigen, die mittels MySQL Abfrage gefüllt wird AWT, Swing, JavaFX & SWT 5
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
J JavaFX Tabelle soll ganze Seite ausfüllen AWT, Swing, JavaFX & SWT 2
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
D Swing Eigene Tabelle AWT, Swing, JavaFX & SWT 18
M Filter in die JFace/SWT Tabelle einbauen AWT, Swing, JavaFX & SWT 5
T SWT Mysql Tabelle zeigt immer nur den ersten Wert immer wieder an AWT, Swing, JavaFX & SWT 3
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
P Swing Klick in Tabelle nicht möglich AWT, Swing, JavaFX & SWT 0
Thallius Swing Tabelle nach Datumsspalte sortieren AWT, Swing, JavaFX & SWT 4
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
E Tabelle zeigt nicht neuste Datenbankeinträge an AWT, Swing, JavaFX & SWT 5
F SWT Problem mit Tabelle und Combobox in einem Wizard AWT, Swing, JavaFX & SWT 5
D Swing JTable- Meine Tabelle der Klasse JTable wird nur bedingt angezeigt AWT, Swing, JavaFX & SWT 4
O Tabelle "animiert" Scrollen AWT, Swing, JavaFX & SWT 1
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
G JavaFX ComboBoxTableCell für Zuordnung in Tabelle AWT, Swing, JavaFX & SWT 2
B Probleme bei Sortierung einer Tabelle mit DefaultTableModel AWT, Swing, JavaFX & SWT 6
L Tabelle reagiert ungewollt auf Mausklick AWT, Swing, JavaFX & SWT 6
C Verschiebbare "Buttons" in einer Tabelle AWT, Swing, JavaFX & SWT 3
S Swing Tabelle mit Model bei eingeschaltetem Filter synchronisieren AWT, Swing, JavaFX & SWT 6
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
B LayoutManager Tabelle repainten AWT, Swing, JavaFX & SWT 4
K Swing JTable Text im Hintergrund einer leeren Tabelle AWT, Swing, JavaFX & SWT 3
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
F Elementbezeichnung in der Tabelle AWT, Swing, JavaFX & SWT 7
F Tabelle sortieren AWT, Swing, JavaFX & SWT 3
F SWT Tabelle Zeile auslesen AWT, Swing, JavaFX & SWT 3
T Spaltennamen jeweils der angezeigten Tabelle anpassen AWT, Swing, JavaFX & SWT 19
S JTable Filter nach Wort oder Wortteil über ganze Tabelle AWT, Swing, JavaFX & SWT 5
L Fehler beim erstellen einer Tabelle mithilfe von 2d-Array AWT, Swing, JavaFX & SWT 3
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
B Tabelle anpassen AWT, Swing, JavaFX & SWT 6
N jComboBox mit eigenem Renderer und eigenem Datentyp als Rückgabe in einer Tabelle AWT, Swing, JavaFX & SWT 2
N Button akivieren, wenn Tabelle verändert worden ist AWT, Swing, JavaFX & SWT 2
C SWT refresh einer Tabelle AWT, Swing, JavaFX & SWT 4
X Tabelle während Funktionsaufruf aktualisieren AWT, Swing, JavaFX & SWT 11
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
S Tabelle sortieren, mit Ausnahme der letzten Zeile AWT, Swing, JavaFX & SWT 9
H SWT RAP Anwendung - Tabelle - Theming AWT, Swing, JavaFX & SWT 3
_dp Swing ScrollPane unterschlägt Großteil der Tabelle AWT, Swing, JavaFX & SWT 7
_dp Swing Tabelle: Ausklappbare Einträge AWT, Swing, JavaFX & SWT 2
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
S Tabelle im selben Formular anzeigen AWT, Swing, JavaFX & SWT 6
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
A SWT Tabelle (elegant) sortieren AWT, Swing, JavaFX & SWT 2
D Scrollbar für Tabelle AWT, Swing, JavaFX & SWT 2
A Button in Tabelle ansprechen AWT, Swing, JavaFX & SWT 6
O Tabelle laden - Prozessorlast 100% ?? AWT, Swing, JavaFX & SWT 11
F Tabelle und Bildindex (Thumbnails) AWT, Swing, JavaFX & SWT 4
A SWT Tabelle Sortieren AWT, Swing, JavaFX & SWT 3
H Swing Tabelle nach Klick auf Button mit Daten füllen? AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
D Swing Tabelle sortieren AWT, Swing, JavaFX & SWT 4
B tabelle mit labeln AWT, Swing, JavaFX & SWT 2
M sortierbare Tabelle mit jface und databinding AWT, Swing, JavaFX & SWT 3
H ArrayList?! in Tabelle AWT, Swing, JavaFX & SWT 3
Milady Annzeigen alle Daten aus der Tabelle AWT, Swing, JavaFX & SWT 6
D SWT String aus Textfeld auslesen und in eine Tabelle speichern AWT, Swing, JavaFX & SWT 5
Ollek JTable - Tabelle füllen mit einer ArrayList AWT, Swing, JavaFX & SWT 22
E Daten aus sortierter Tabelle lesen AWT, Swing, JavaFX & SWT 2
T Swing Java Darstellung einer Tabelle AWT, Swing, JavaFX & SWT 3
FoolMoon Swing JCheckBox neben Text in einer Tabelle AWT, Swing, JavaFX & SWT 2
K Strings aus jTextArea in Liste oder Tabelle übertragen- wie? AWT, Swing, JavaFX & SWT 4
H Swing Saubere Erstellung einer Tabelle AWT, Swing, JavaFX & SWT 3
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4
T Invalid Range - Fehler bei TableRowSorter / Tabelle AWT, Swing, JavaFX & SWT 17
S Zeile an eine Tabelle anfügen AWT, Swing, JavaFX & SWT 5
S Datum in Tabelle darstellen? AWT, Swing, JavaFX & SWT 4
R JTable: Tabelle neu darstellen AWT, Swing, JavaFX & SWT 6
M JSplitPane Tabelle neu zeichnen AWT, Swing, JavaFX & SWT 3
G Tabelle eine JList anziegen AWT, Swing, JavaFX & SWT 4
G Tabelle Spalten unsichtbar machen AWT, Swing, JavaFX & SWT 5
P Für den Inhalt einer Zelle (aus Tabelle) STRG-C anwenden AWT, Swing, JavaFX & SWT 2
D Zahlen mit nullen in einer Tabelle anzeigen AWT, Swing, JavaFX & SWT 2
W Probleme beim Erstellen einer Tabelle AWT, Swing, JavaFX & SWT 2
? Tabelle formatieren - auch ohne CellRenderer? AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben