SWT Table Größen verändern

Swoop

Gesperrter Benutzer
Hallo allerseits,
ich suche eine Möglichkeit bei einer Tabelle die Col width zu verändern... Das alles ist ja kein Problem solang die Überschriften angezeigt sind! Allerdings sollte bei mir die Überschriften der Tabelle ausgeblendet sein...

Gibt es eine Möglichkeit beim Markieren und Verschieben der Zellenlinien die Tabelle zu verändern?!
 

Michael...

Top Contributor
Die Änderung der Spaltenbreite per Maus ist in der JTable nur über die Header möglich. Ohne Header musste man sich vermutlich selbst was mit MouseListener und MouseMotionListener basteln. z.B nach mousePressed() berechnen, ob im die Mouse im Bereich zwischen zwei Spalten gedrückt wurde, falls ja anhand der Information aus mouseDragged() die Spaltenbreite entsprechend mit ziehen.
 

Swoop

Gesperrter Benutzer
ok ... Schade, mit sowas habe ich schon gerechnet! Dann wird es doch viel mehr arbeit als anfangs gedacht hatte gehofft es gibt hier irgendeine Lösung... komisch dass das Problem so selten Auftritt^^
 

Michael...

Top Contributor
Sorry, sehe gerade, dass das Thema als SWT gekennzeichnet ist. Mit SWT hatte ich noch nie was zu tun, kann sein, dass es da bereits solche Implementierungen gibt. Ansonsten sollte das mittels MouseListenern umzusetzen ein nicht allzu grosser Aufwand sein.
Ich selbst hatte nie das Bedürfnis, da ich Tabellen bisher immer mit Spaltenüberschriften genutzt habe.
 

Swoop

Gesperrter Benutzer
hmm naja ... ich habe aber auch nichts gefunden im netz und such mich tot^^

naja also zum hintergrund ... ich hab zwei Tabellen die Farblich hinterlegt sind und die erste Tabelle sind die Überschriften der zweiten Tabelle ! Praktisch sind diese genau übereinander^^

Naja dann hab ich noch eine frage und zwar werden die Tabellen immer beim Erzeugen mit 3 Spalten angezeigt ... Jetzt würde ich aber gerne nur eine einzige Zeile anzeigen lassen... Ich habe die Höhe der Tabelle von meinem Layout auf 0 gesetzt ... aber es zeigt immer noch etwas von der zweiten Zeile an... Gibt es vllt da schon irgendwie eine Möglichkeit, dass er nur die Zeilen anzeigt die auch mit TableItems befüllt sind ?!

Grüße Swoop
 
G

Gast2

Gast
hmm naja ... ich habe aber auch nichts gefunden im netz und such mich tot^^

naja also zum hintergrund ... ich hab zwei Tabellen die Farblich hinterlegt sind und die erste Tabelle sind die Überschriften der zweiten Tabelle ! Praktisch sind diese genau übereinander^^

Naja dann hab ich noch eine frage und zwar werden die Tabellen immer beim Erzeugen mit 3 Spalten angezeigt ... Jetzt würde ich aber gerne nur eine einzige Zeile anzeigen lassen... Ich habe die Höhe der Tabelle von meinem Layout auf 0 gesetzt ... aber es zeigt immer noch etwas von der zweiten Zeile an... Gibt es vllt da schon irgendwie eine Möglichkeit, dass er nur die Zeilen anzeigt die auch mit TableItems befüllt sind ?!

Grüße Swoop
Warum willst du 2 Tabellen übereinander legen? Wenn in der einen nur die Überschriften drin sind... hört sich strange an!!!

Check gar nicht was du vor hast... Mach ein KSKB!!!
 

Swoop

Gesperrter Benutzer
Also ok !

hier ein KSKB. Ich denke so dürfte es verständlicher werden:

Java:
public class TestGUI
{
	private Shell shell;

	/**
	 * Runs the application
	 */
	public void run()
	{
		Display display = new Display();
		shell = new Shell(display);
		shell.setLayout(new GridLayout(1, false));
		shell.setText("Test");

		Table head = createTable();
		TableItem itemHead1 = new TableItem(head, SWT.NONE);
		itemHead1.setText(new String[] { "Vorname", "Nachname", "Ort" });
		itemHead1.setBackground(new org.eclipse.swt.graphics.Color(this.shell
				.getDisplay(), 115, 187, 255));
		TableItem itemHead2 = new TableItem(head, SWT.NONE);
		itemHead2.setText(new String[] { "Straße", "PLZ", "Land" });

		Table table = createTable();

		TableItem item1 = new TableItem(table, SWT.NONE);
		item1.setText(new String[] { "Tim", "Muster", "Krieger" });
		item1.setBackground(new org.eclipse.swt.graphics.Color(this.shell.getDisplay(),
				115, 187, 255));
		TableItem item12 = new TableItem(table, SWT.NONE);
		item12.setText(new String[] { "Im Ander", "73554", "Deutschland" });
		TableItem item2 = new TableItem(table, SWT.NONE);
		item2.setText(new String[] { "Max", "Werner", "Weitmars" });
		item2.setBackground(new org.eclipse.swt.graphics.Color(this.shell.getDisplay(),
				115, 187, 255));
		TableItem item22 = new TableItem(table, SWT.NONE);
		item22.setText(new String[] { "Landerstr", "73880", "Deutschland" });
		TableItem item3 = new TableItem(table, SWT.NONE);
		item3.setText(new String[] { "Reene", "Miller", "Lorch" });
		item3.setBackground(new org.eclipse.swt.graphics.Color(this.shell.getDisplay(),
				115, 187, 255));
		TableItem item32 = new TableItem(table, SWT.NONE);
		item32.setText(new String[] { "Teckstr", "63529", "Deutschland" });

		// label.setFont(label.getFont().get);
		shell.pack();
		
		shell.open();

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

	private Table createTable()
	{
		Table t = new Table(shell, SWT.BORDER);

		TableColumn tc1 = new TableColumn(t, SWT.CENTER);
		TableColumn tc2 = new TableColumn(t, SWT.CENTER);
		TableColumn tc3 = new TableColumn(t, SWT.CENTER);
		// tc1.setText("Vorname");
		// tc2.setText("Nachname");
		// tc3.setText("Adresse");
		tc1.setWidth(70);
		tc2.setWidth(70);
		tc3.setWidth(80);
		t.setHeaderVisible(false);
		t.setLinesVisible(true);

		return t;
	}

	public static void main(String[] args)
	{
		new TestGUI().run();
	}

Im Anhang ist noch ein Screenshot ..

Edit:

Kurze Erklärung noch:

Es soll ein programm werden, dass CSv Dateien ausliest und man sie auch damit bearbeiten kann... Es gibt CSV Files die haben verschiedene Bedeutungen und beginnen mit einem Bezeichern ... zb K ...
diese sollen Farblich anders hervorgehoben werden und mit anderen Überschriften versehen werden...
Das heißt also wenn ich eine CSV Datei habe, die K-Sätze, A-Sätze und H-Sätze hat müssen drei Überschriften gegeben sein und drei Farben verwendet werden...
 

Anhänge

  • kskb.png
    kskb.png
    3 KB · Aufrufe: 40
Zuletzt bearbeitet:

dzim

Top Contributor
Ein paar Dinge:
1) Versuch es vielleicht über einen Dialog - in Eclipse hat man auch einige Dialoge (z.B. Tasks - dort rechts auf das Menü, und "Columns..." anwählen), mit denen man Spalten aus und einblenden kann und auch in der Breite verstellen kann (ersteres hab ich zwar aufgrund eines SWT-Bugs(???) nicht hinbekommen, zweiteres sollte aber gut umzusetzen sein)
2) Ich versteh den Aufbau deiner GUI nicht wirklich... Warum bitte einen Datensatz auf zwei Zeilen verteilen, wie in deinem Beispiel - also wäre ich Nutzer des Programms würde ich die Hände über'm Kopf zusammenschlagen. Nutz lieber die Idee des Master-Details, das fände ich persönlich besser.

BTW: Willst du - wie in deinem Beispiel - wirklich direkt auf Tables arbeiten? Nimm doch lieber einen TableViewer...
 

Swoop

Gesperrter Benutzer
Ein paar Dinge:
1) Versuch es vielleicht über einen Dialog - in Eclipse hat man auch einige Dialoge (z.B. Tasks - dort rechts auf das Menü, und "Columns..." anwählen), mit denen man Spalten aus und einblenden kann und auch in der Breite verstellen kann (ersteres hab ich zwar aufgrund eines SWT-Bugs(???) nicht hinbekommen, zweiteres sollte aber gut umzusetzen sein)
Wie meinst du das über einen Dialog ?! Das Porgramm muss später auf einem Server ohne Eclipse laufen ...

2) Ich versteh den Aufbau deiner GUI nicht wirklich... Warum bitte einen Datensatz auf zwei Zeilen verteilen, wie in deinem Beispiel - also wäre ich Nutzer des Programms würde ich die Hände über'm Kopf zusammenschlagen. Nutz lieber die Idee des Master-Details, das fände ich persönlich besser.
Master Details ?! Was ist damit gemeint ?
Also ich weis nicht obs so wirklich rüberkommt wie ich mir das Vorstelle aber ich dachte eig es ist die beste Art dies darzustellen was ich in den Daten bekomme ...

Code:
K;10b;31;12-14
S;Hans;13;Bettringen;TheaterAG
S;Roland;13;Bettringen;SportAG
S;Arthur;12;Waldstetten;InternetAG
S;Lotz;14;Waldstetten;SportAG
F;M;Mo 12Uhr,Di 13 Uhr
F;D;Di und Mi 14 Uhr
F;E;Fr 10 Uhr
K:9a;10-11
S;Kevin;11;Bettringen;KochAG
S;Edin;10;Bettringen;TheaterAG
S;Lukas;11;Bargau;SportAG
S;Jan;10;Bargau;InternetAG
F;IT;Don 16 Uhr
F;Denglish;Mo und Fr 11 Uhr
So sieht die CSV-Datei Beispielshaft aus ...

BTW: Willst du - wie in deinem Beispiel - wirklich direkt auf Tables arbeiten? Nimm doch lieber einen TableViewer...
Naja ich hab jetzt eig alles sehr gut ohne einen TableViewer gelöst und habe nicht vor ihn eig einzubauen!... Außerdem ist das beispiel oben nur ein kurz zusammen geschriebenes um das Problem etwas darzustellen...
 

dzim

Top Contributor
Ok, fangen wir hinten an:
Ich würde dir dennoch einen TableViewer empfehlen, weil er sehr viel Arbeit abnehmen kann und das Handling imho besser ist. Man wirft ihm eine Liste (von z.B. CSVLine Objekten) rein - je nachdem, mit welchen Objekten du das intern händelst - und der Viewer stellt es mit wenigen Handgriffen dar. ohne TableItem geschubse und sich um mehrere Listener zu kümmern, etc. Im Gegenteil, es kommen gleich noch Interfaces für Doppel-Klick, und markierte Auswahl (u.a.) sowie einfach zu implementierende Filter, Sortierer u.ä. mit...
Ob du das im Endeffekt machst, ist natürlich deine Sache, aber wenn du deine API halbwegs übersichtlich hingemeißelt hast, sollte es nicht so schwer umzustellen sein (auch wenn ich vielleicht leicht reden habe, denn ich arbeite nur direkt mit der Eclipse API und da füge ich lediglich ein Plugin hinzu).

Das Format deiner CSV-Datei finde ich etwas kryptisch und werde da nicht schlau draus, aber wenn es dir so passt, ist's wohl ok. Ich könnte jetzt natürlich XML im allgemeinen empfehlen, zumal es in Java direkt JAXB gibt, womit man XML direkt in einen schön zu benutzenden Objektbaum umwandeln kann (und zurück). Voraussetzung ist, dass du XML Schemas erstellen kannst, den rest macht der xjc Mapper. Man kann in dem Fall sicher auch immer EMF empfehlen, aber das mag hier auch eher mit Kanonen auf Spatzen geschossen sein! ;-)

Master-Details findest du in diversen Editoren, wie etwa dem Plugin-Editor von Eclipse: Recht ist eine Tabelle/ein Baum, klickt man dort ein Element an, ändert sich links die Ansicht. So oder so ähnlich würde ich das Konzept in Kürze beschreiben.
In deinem Fall klickt man Beispielsweise ein Person an und sieht dann im Details-Block den Ort, aus dem sie stammt.

Zum Dialog: Du sagst, es muss auf einem Server laufen... Wie jetzt? Remote? Oder soll es eine Web-Anwendung sein?
Erst einmal kannst du mit der Eclipse-API natürlich auch Applikationen bauen, die nicht Eclipse benötigen... Ich bauen zum Beispiel eine eigene Plattform, unter der Eclipse-Equinox läuft, ich benutze nur keine Plugins aus der IDE, sondern baue meine eigenen.
Den Dialog kannst du aber - so oder so - auch einfach über eine Kontextmenü, das auf der Table sitzt erreichen - oder über einen Button - je nachdem, wie du es lieber machen willst.
 

Swoop

Gesperrter Benutzer
So Hallo...

In der Tat ist der TableViewer besser... Ich benötige ihn hier einfach nicht :D

Und die CSV Datei war nur eine selbst geschriebene sehr kurze und abgespeckte CSV-Datei ... das sollte nur ein kurzes schnelles slebstgeschriebenes Beispiel sein.
Der Grund warum ich das mach, dass ich hier immer wieder mit dummen sehr großen CSV-Dateien zu kämpfen habe in der ich immer eine ewigkeit benötige um mich zurecht zu finden! Die Master-Detail ansicht hab ich auch inzwischen gegoogelt und ist wohl die beste Möglichkeit. Allerdings möchte ich nicht weit von der CSV-Datei wegkommen, da ja nur Administratoren und ich (Entwickler) das Teil dann benützen und am besten auch Fehler in diesen CSV Datei erkennen und abändern sollen...
Die Wirklichen CSV-Dateien sind 10000 mal so lang und haben zwischen 30-50 Strichpunkte :D also es ist ein größeres Programm welches diese erstellt. XML kenn ich und benutz ich auch um meine Daten zu speichern aber an die Daten komm ich leider nur aus diesen CSV-Files...

Naja ich hab jetzt für beides eine Lösung gefunden:
Das Problem mit dem größe Verändern werde ich über Mouse-Listener lösen und das Problem mit der letzten Zeile hab ich behoben indem ich das Layout auf 0 gesetzt habe und falls mehr als nur ein Item in der Tabelle ist muss dieses Layout erhöht werden.

Grüße Swoop
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
T Table Renderer AWT, Swing, JavaFX & SWT 2
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
E JavaFX Von der Table-Cell zur Row AWT, Swing, JavaFX & SWT 0
A JavaFX Table Delete Row AWT, Swing, JavaFX & SWT 5
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
D JavaFX Table Filter AWT, Swing, JavaFX & SWT 4
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
T SWT checkbox in table AWT, Swing, JavaFX & SWT 6
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
Z JavaFX Table mit MenuButton AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
E extended Swing Table AWT, Swing, JavaFX & SWT 2
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
E SWT Popupmenu auf der Überschrift eines swt.widgets.Table verhindern? AWT, Swing, JavaFX & SWT 3
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
reibi SWT SWT - Table AWT, Swing, JavaFX & SWT 8
A Swing JButton in einer Table Cell AWT, Swing, JavaFX & SWT 9
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
M SWT - Table deselecten AWT, Swing, JavaFX & SWT 2
R SWT | Table | Zeilenkopf AWT, Swing, JavaFX & SWT 2
M SWT Table disabled und Scrollbar enabled AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
L Jbutton in table AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT Maximum an Items in Table? AWT, Swing, JavaFX & SWT 2
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
Q SWT Mindetsgröße für Table AWT, Swing, JavaFX & SWT 7
1 Swing manual resize table column to min size AWT, Swing, JavaFX & SWT 2
hdi SWT SWT Table: 2 kleine Probleme AWT, Swing, JavaFX & SWT 4
lumo SWT Table und Klassen AWT, Swing, JavaFX & SWT 14
lumo SWT Table CellEditor - knifflig AWT, Swing, JavaFX & SWT 35
M SWT Table mit Columns und Items AWT, Swing, JavaFX & SWT 3
L Java Table AWT, Swing, JavaFX & SWT 4
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
A SWT Table mit Bildern und Checkboxes AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
A SWT Table clearAll() und zurücksetzen. AWT, Swing, JavaFX & SWT 3
K SWT Table Modell / Datenmodell AWT, Swing, JavaFX & SWT 14
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
T SWT - Table Events AWT, Swing, JavaFX & SWT 3
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
T Fokus auf CB in Table mit beliebiger Taste AWT, Swing, JavaFX & SWT 12
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
G SWT-Table sortieren AWT, Swing, JavaFX & SWT 12
T Input-Check bei Textfeldern in Table AWT, Swing, JavaFX & SWT 5
G SWT Table Controll AWT, Swing, JavaFX & SWT 7
L SWT-Table: Datum ausgeben? AWT, Swing, JavaFX & SWT 5
G Table in SWT AWT, Swing, JavaFX & SWT 2
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
S SWT Table - Wie Columns hinzufügen / entfernen AWT, Swing, JavaFX & SWT 3
K javax.swing.table.TableRowSorter AWT, Swing, JavaFX & SWT 13
I JComboBox in Table AWT, Swing, JavaFX & SWT 4
G wo wird die table mit daten gefüllt? oô AWT, Swing, JavaFX & SWT 4
S SWT Drag&Drop / Table AWT, Swing, JavaFX & SWT 9
E JTable-während der Einfügezeit der Zellen in die Table AWT, Swing, JavaFX & SWT 2
S table - combobox AWT, Swing, JavaFX & SWT 7
D Selection SWT Table AWT, Swing, JavaFX & SWT 5
D SWT Table AWT, Swing, JavaFX & SWT 5
P Table Layout remove()? AWT, Swing, JavaFX & SWT 2
W Zeile in Table (SWT) selektieren und auslesen AWT, Swing, JavaFX & SWT 4
G Dringend ! SWT-Table übernimmt Änderung nicht AWT, Swing, JavaFX & SWT 2
L Multiline Table AWT, Swing, JavaFX & SWT 3
R SWT: Icons im Table vor den Einträgen AWT, Swing, JavaFX & SWT 3
T mit rechter maustaste Table row selektieren AWT, Swing, JavaFX & SWT 2
F Zeilenhöhe bei SWT Table AWT, Swing, JavaFX & SWT 3
S Nochmal Spaltenbriete im Table AWT, Swing, JavaFX & SWT 2
G mal wieder table. AWT, Swing, JavaFX & SWT 3
V SWT Table mit SWT.CHECK AWT, Swing, JavaFX & SWT 2
P SWT table updaten AWT, Swing, JavaFX & SWT 7
S Frage zu Table(Column)Model AWT, Swing, JavaFX & SWT 3
J ScrollPanel mit 2 Table`s AWT, Swing, JavaFX & SWT 5
J Table Model AWT, Swing, JavaFX & SWT 2
J Abstract Table Model AWT, Swing, JavaFX & SWT 7
T in einer Table soll jede zweite Zeile markiert werden AWT, Swing, JavaFX & SWT 3
E Inhalt einer Zelle eine Table in ein TextField bekommen AWT, Swing, JavaFX & SWT 24
H Feste Positionen und Größen in JavaFX AWT, Swing, JavaFX & SWT 1
C SWT group Elemete mit unterschiedlichen Größen angeben AWT, Swing, JavaFX & SWT 6
F FormLayout Größen Problem AWT, Swing, JavaFX & SWT 2
L Swing Größen-Problem mit JFrame AWT, Swing, JavaFX & SWT 2
H Größen von JPanels,JLable und JTextfield.. AWT, Swing, JavaFX & SWT 12
J Textfelder in Applet übernehmen größen angabe nicht! AWT, Swing, JavaFX & SWT 4
P JTextfield Text durch Keylistener verändern AWT, Swing, JavaFX & SWT 4
H JItem während der Programmlaufzeit verändern AWT, Swing, JavaFX & SWT 8
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
ruutaiokwu Swing windowStateChanged macht exakt das Gegenteil beim Verändern der Fenstergrösse AWT, Swing, JavaFX & SWT 3
E wie Schriftfarbe in JEditorPane verändern? AWT, Swing, JavaFX & SWT 10
J SplitPane Aussehen des Divider verändern AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben