SWT TableViewer und IColorProvider

lumo

Top Contributor
hallo,
ich möchte in meine tabelle alternierende farben der zeilen haben.
hab dazu die doku durchgestöbert und bin auf den IColorProvidergestoßen

IColorProvider. Make your label provider implement this interface to set a different foreground or background color for an item. Unless system colors are used, these colors should be cached to minimize the amount of system resources used. Be sure to dispose of any colors you create when your label provider is disposed.

nun implementiert mein labelprovider diesen IColorProvider, allerdings ändern sich die farben noch immer nicht...
muss dazu noch was gemacht werden? konnte dazu nichts finden...

oder versteh ich da was falsch ???:L
 
Zuletzt bearbeitet:

lumo

Top Contributor
tja die frage ist eher, welche farbe zurückgeben.
denn in denn ich hab null plan wie ich an dem ort zu ner zeileninformation komme?!
die info für die spalte hab ich... also alternierende spaltenfarben hab ich schon hinbekommen... ist leider nicht das, was ich will ;)

Code:
cell.setBackground(getBackground(element));

wobei das element keine informationen über die zeile hat...
 
G

Gast2

Gast
Ich weiß gar nicht was du vor hast??? Eine ganze Zeile einfärben eine Zelle???Implmentierst du es bei einem LabelProvider bei einem CellLabelProvider???
Welche Zeilen willst du denn einfärben lassen irgendwo musst du eine info haben...
 

lumo

Top Contributor
wie? irgendwie steh ich grad voll an.
wie/wo sollte ich das machen???

das füllt mir die spalten
Code:
for (int i = 0; i < infos.size(); i++) {
			fi = infos.get(i);

			final TableViewerColumn tvc = new TableViewerColumn(tableViewer,
					SWT.NONE);// addField(fi);
			TableColumn tc = tvc.getColumn();
			tc.setText(fi.getFriendlyName());
			tc.setToolTipText(fi.getDescription());

			// <!-- get the width & enabled
			String widthS = p.getProperty(ListView.class.getSimpleName()
					+ ".columns." + tvc.getColumn().getText() + ".width");
			int width = 0;

			if (widthS == null) {
				width = 100;
			} else {
				width = Integer.parseInt(widthS);
			}
			String enabledS = p.getProperty(ListView.class.getSimpleName()
					+ ".columns." + tvc.getColumn().getText() + ".enabled");
			boolean enabled = false;
			if (enabledS != null) {
				enabled = enabledS.equals("1");
			}
			// get the width & enabled -->
			if (enabled) {
				tableColumnLayout.setColumnData(tc, new ColumnWeightData(width,
						width, true));
			} else {
				tableColumnLayout.setColumnData(tc, new ColumnWeightData(0, 0,
						false));
			}

			// listen for resize, and store in properties on change
			tc.addControlListener(new ControlAdapter() {
				public void controlMoved(ControlEvent e) {
					p.put("ColumnOrder", getColumnOrder());
				}

				public void controlResized(ControlEvent e) {
					TableColumn parent = (TableColumn) e.getSource();
					String tableColumnName = parent.getText();
					if (VERBOSE)
						System.out.println(tableColumnName + " was resized to "
								+ parent.getWidth());
					if (parent.getWidth() > 0) {
						p.setProperty(ListView.class.getSimpleName()
								+ ".columns." + tableColumnName + ".enabled",
								Integer.toString(1));
						p.setProperty(ListView.class.getSimpleName()
								+ ".columns." + tableColumnName + ".width",
								Integer.toString(parent.getWidth()));
					} else {
						p.setProperty(ListView.class.getSimpleName()
								+ ".columns." + tableColumnName + ".enabled",
								Integer.toString(0));
					}
				}
			});

			// add the column to the header menu
			createMenuItem(headerMenu, tc, fi);

			tvc.setLabelProvider(new MyCellLabelProvider<Site>(fi));
		}

das füllt mir die zeilen
Code:
tableViewer.setInput(items);
 
G

Gast2

Gast
ja also machst ein if(i%2== 0) dann setze eine Farbe wenn net setze die andere Farbe und die gibst du dann zurück...
 

lumo

Top Contributor
dachte ich auch.
aber infos ist eine liste der columns, also bekomme ich dann die spalten alternierend.
ich hab nirgends die zeilen, da das
Code:
tableViewer.setInput(items);
mit die zeilen füllt...
das ist ja genau mein problem :bae:
 
G

Gast2

Gast
dachte ich auch.
aber infos ist eine liste der columns, also bekomme ich dann die spalten alternierend.
ich hab nirgends die zeilen, da das
Code:
tableViewer.setInput(items);
mit die zeilen füllt...
das ist ja genau mein problem :bae:

Mhm stimmt ja... mhm keine ahnung noch nie gebraucht^^...
eventuell den viewer mitgeben und dann schauen an welcher Stelle das objekt steht...

EDIT: Ich würde sowas mal in das eclipse Forum schreiben...
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen

Neue Themen


Oben