Auslesen von selektierten Tableitems (SWT)

chickenwings

Erfahrenes Mitglied
Hallo Forum,

habe eine Table und möchte eine selektierte Row auslesen.
Diese Daten sollen in vordefinierte Textfelder übernommen werden.

Das Auslesen geht auch einigermassen, nur sind die ausgelesenen Daten vom Typ Tableitem und nicht vom Typ String. Konvertieren klappt leider auch nicht.
Wie bekomme ich nun den Typ den ich brauche?

Gruss
chickenwings
 
Hallo Andre,

die Idee ist das gewünschte Item zu finden. Danach die Zellenwerte dieser Zeile mit einer Schleife mit myItem.getText(index Spalte) zu holen.

Java:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

public class TableRowSelection {

	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setSize(480,320);
		final Table table = new Table(shell, SWT.MULTI | SWT.BORDER
				| SWT.FULL_SELECTION);
		table.setLinesVisible(true);
		table.setHeaderVisible(true);
		String[] titles = { "A", "B", "C" };
		for (int i = 0; i < titles.length; i++) {
			TableColumn column = new TableColumn(table, SWT.NONE);
			column.setText(titles[i]);
		}
		int count = 10;
		for (int i = 0; i < count; i++) {
			TableItem item = new TableItem(table, SWT.NONE);
			item.setText(0, "a" + i);
			item.setText(1, "b" + i * i);
			item.setText(2, "c" + i * i * i);
		}
		for (int i = 0; i < titles.length; i++) {
			table.getColumn(i).pack();
		}
		table.setSize(table.computeSize(SWT.DEFAULT, 200));

		final Text text1 = new Text(shell, SWT.BORDER);

		GridLayout gl1 = new GridLayout();
		gl1.numColumns = 1;
		GridData gData = new GridData(GridData.FILL_BOTH);
		table.setLayoutData(gData);
		gData = new GridData(GridData.FILL_HORIZONTAL);
		text1.setLayoutData(gData);

		shell.setLayout(gl1);

		table.addSelectionListener(new SelectionListener() {
			public void widgetSelected(SelectionEvent e) {
				TableItem item = table.getItem(table.getSelectionIndex());
				text1.setText("");
				for (int i = 0; i < table.getColumnCount(); i++)
					text1.append(item.getText(i));
			}

			public void widgetDefaultSelected(SelectionEvent e) {
			}
		});

		shell.layout();
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
}


Vg Erdal
 
Hi Erdal,

Du bist echt die Wucht ;) . Genau so etwas habe ich gesucht.
Man kann viel von Dir lernen, Du kommst nicht zufällig aus Hamburg, nein?

Deine Tab-Klassen werde ich jetzt auch mal umsetzen.
Wenn Du sagts, Du machst SWT erst seit ein paar Tagen, darf ich denn fragen aus was Du gelernt hast? Hast Du ein Buch, das Du empfehlen kannst oder ein gutes Tutorial?

Gruss
André
 
Hallo Andre,

könntest du mir Wucht vielleicht auch übersetzen ;) .

Wenn Du sagts, Du machst SWT erst seit ein paar Tagen, darf ich denn fragen aus was Du gelernt hast? Hast Du ein Buch, das Du empfehlen kannst oder ein gutes Tutorial?

Das ist ja so, ich beschäftige mich seit knapp einem Jahr intensiv mit Java. D.h. ich kenne micht mit AWT und Swing einigermaßen aus. Also GUI programmieren ist für mich nicht unbedingt neu. Nur das ich bisher noch nichts mit SWT gemacht habe. Zweitens habe ich einwenig Überblick über das Onlineangebot von Dokus und Tutorials über Java (Desktopanwendungen).
Meine Vorgehensweise ist dann fast immer folgende, ich gehe die in Frage kommenden Links, Dokus, Tutorials durch. Du bist ja nicht der erste der selektierte TableItems auslesen möchte. Nach dem ich ein Beispiel gefunden habe tue ich diese einfach nach Bedarf modifizieren. Notfalls hilft auch google viel.

Würde dir empfehlen das du java links sammelst, und nach Themen geordnet in deinem Favoritenordner oder Lesezeichenordner speicherst. Diese Liste solltest du pflegen und von Zeit zu Zeit erweitern. Wenn du dann bei einer Problemstellung, ein Paar Links manchmal auch mehr durchgehst, wirst du zu 80 Prozent fündig. Falls du dich nur auf deutsche Doku und Tutorials begrenzt, werden die Chancen erheblich sinken. Also bissel englisch Kentnisse auch von Vorteil.

Und mehr steckt nicht dahinter. Eine Doku würde ich dir nicht empfehlen, es gibt nie die richtige oder beste. Man sollte sich besser einen Überblick über die vorhandenen Dokus zu einem Thema verschaffen, die Antwort zu einer Fragestellung findet man hier eine andere dort.

So hab jetzt schon wieder zuviel gelabert :) .

Vg Erdal
 
Zurück