Daten in JTable in mehreren Zeilen darstellen

Status
Nicht offen für weitere Antworten.
R

redbomber

Gast
Hallo zusammen, ich brauche wieder euren Rat:

Ich habe sehr viele Daten, die ich in einer JTable darstellen mächte.
Bisher habe ich die JTable, die sich in einem JScrollPane befindet.
Folglich wird die Tabelle mit Scrollbalken angezeigt.

Nun möchte ich aber dass die Daten nicht alle in eine Zeile geschrieben werden, sondern je nach Fenstergröße sollen die Daten dann in die nächste Zeile geschrieben werden.
Daher benötige ich erst einmal die Größe von dem Viewport, damit ich weiss wie breit dieser Viewport ist.
Anhand der Breita kann ich dann doch bestimmt errechnen wieviele Zellen in eine Zeile passen.

Wie bekommen ich jetzt von meiner JTable die ScrollPane um dann somit auf den Viewport der JScrollPane zuzugreifen?
 
R

redbomber

Gast
Also wenn ich das richtig verstehe, dann ist der ViewPort die Größe von dem Bereich der aktuell dargestellt wird.
Ist meine Tabelle breiter als der ViewPort, so wir die horizontale ScrollBar dargestellt.

Von der JTable aus muss ich doch irgendwie auf die JScrollTable zugreifen können um mir somit die Größe vom ViewPort ausgeben zu können?
 

Verjigorm

Top Contributor
bau dir nen Controller, der Zugriff auf JTable UND JScrollpane hat

oder übergib die Referenz zur JScrollpane "an die JTable"
wobei du da vermutlich eine eigene Klasse mit meinst
 
R

redbomber

Gast
Genau, ich habe eine eigene Klasse von JPanel.
In dieser erzeuge ich eine JTable, daraufhin eine JScrollPane, dabei bekommt die JScrollPane die JTable als Parameter übergeben.

Code:
public class Component extends JPanel {
	
	public Component(){
		
		super(new BorderLayout());
		setName("Component");
		setBackground(Color.WHITE);
		
		MapTable mapTable = new MapTable();	// erbt von JTable

		JScrollPane scrollPane = new JScrollPane(mapTable);
		scrollPane .setName("scrollPane");

		add(scrollPane ,BorderLayout.CENTER);

	}
}

Da kann ich die Refernez auf die JScrollPane an die JTable nicht übergeben, da ich sie erst danach erzeuge.


Wie meinst du das mit dem Controlder?

Handelt es sich dabei um eine eigene Klasse die entsprechend Referenzen auf alle Komponenten besitzt?
Also dass ich etwa von meiner JTable aus auf diesen Controller zugreife und somit Zugriff auf die ScrollPane erhalte?
 

André Uhres

Top Contributor
redbomber hat gesagt.:
Von der JTable aus muss ich doch irgendwie auf die JScrollTable zugreifen können
um mir somit die Größe vom ViewPort ausgeben zu können?
Versuch's mal hiermit:
Code:
table.getVisibleRect()
 
R

redbomber

Gast
Also ich habe mir gleich auf verschiedene Weise versucht die Größe von viewport auszugeben:

Code:
scrollPane.getViewport().getViewSize()  -> [width=106965,height=45]
scrollPane.getViewport().getVisibleRect() -> [x=0,y=0,width=0,height=0]
scrollPane.getViewport().getSize() -> [width=0,height=0]

table.getVisibleRect() -> [x=0,y=0,width=0,height=0]

Ich bekomme also nur eine Dimension, wenn ich scrollPane.getViewport().getViewSize() verwende.
Aber ich bezweifle dass es sich dabei wirklich nur um die Größe des ViewPort handelt, da bei mir 35 Zellen in einer Reihe mit je 15x15 Pixel angezeigt werden. Also müsste der ViewPort gerade einmal knapp 600 Pixel breit sein.
Daher bekomme ich hier wohl die komplette Breite der Tabelle angezeigt.

Aber es gibt doch bestimmt eine Möglichkeit die Größe des sichtbaren Bereichs angezeigt zu bekommen.
 

André Uhres

Top Contributor
redbomber hat gesagt.:
Code:
table.getVisibleRect() -> [x=0,y=0,width=0,height=0]
Um den VisibleRect zu bekommen, muss die JTable entweder visible oder zumindest displayable sein.
Mit frame.pack() können wir sie displayable machen, ohne daß sie sichtbar wird :wink:
 
R

redbomber

Gast
Erst einmal vielen Dank euch allen!!!


@ Verjigorm
Also mit:

scrollPane.getViewport().getPreferredSize()

erhalte ich die die Größe [450x400]

Da ich aber 37 Zellen in einer Spalte mit je 15 Pixel besitze, müssten die Size von ViewPort größer sein.

--------------------------------------------------------------------------------------------------------------------------------

@André Uhres

Meine JTable wird einem JPanel hinzugefügt.
Ich dachte beim hinzufügen einer Komponente zu einer anderen komponente mittels add(), wird addNotify() aufgerufen und somit die hinzugefügte Komponente automatisch sichtbar gemacht!?
 

André Uhres

Top Contributor
Damit alle Grössen ausgerechnet werden können,
muss das Fenster an eine native Bildschirmresource gebunden werden.
Das geschieht nur mit "pack()" oder setVisible(true).
 
R

redbomber

Gast
Also vielen Dank! Es hat nun endlich geklappt:

folgende Methoden bringen mich dabei nun zum Ziel:

Dies ist vermutlich die größe der kompletten ScrollPane mitsamt dem Schiebereglern (also der sichtbare Bereich):
Code:
JScrollPane.getWidth());        // 572
JScrollPane.getHeight());       // 307
JScrollPane.getBounds());     // [x=0,y=0,width=572,height=307]

Hierbei handelt es sich um den kompletten ViewPort (also der sichtbare Bereich), also ohne die Schiebebalken:
Code:
JScrollPane.getSize());         // [width=566,height=268]
JScrollPane.getViewport().getVisibleRect() //[x=0,y=0,width=566,height=268]
JScrollPane.getViewport().getSize() //[width=566,height=268]

Hierbei handelt es sich um die komplette Größe der Tabellendaten.
Also wird hier auch der nicht sichtbare Bereich mit eingerechnet.
Code:
JScrollPane.getViewport().getViewSize(); // [width=142620,height=60]

Hierbei handelt es sich um den von mir erwünschten bzw. gesuchten Bereich.
Dies hier ist also der sichtbare Bereich der Daten
Code:
JTable.getVisibleRect(); // [x=0,y=0,width=566,height=60]

PreferredSize brachte mir leider nichts. Wobei ich ohnehin dieses PreferredSize() nicht verstehe.
Wozu kann ich die PreferredSize() festlegen?
Code:
getViewport().getPreferredSize(); // [width=450,height=400]
 

André Uhres

Top Contributor
Manche LayoutManager benutzen die PreferredSize, um die Grösse der JScrollPane auszurechnen.
FlowLayout z.B. respektiert die PreferredSize genau.

Wenn man die PreferredSize der JScrollPane nicht angibt, dann wird sie errechnet aufgrund
der PreferredSize seiner Komponenten, wobei Viewport der grösste Faktor ist.

Auch die PreferredScrollableViewportSize der Clientkomponente kann eine Rolle spielen.
Zum Beispiel ist die PreferredScrollableViewportSize von JList standardmässig so eingestellt,
daß acht Zeilen angezeigt werden. Die VisibleRowCount der Clientkomponente ist ein weiterer
möglicher Faktor...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
L Daten werden in JTable nicht angezeigt:( AWT, Swing, JavaFX & SWT 6
J Daten in JTable nach Sortierung auslesen AWT, Swing, JavaFX & SWT 2
hdi Swing JTable & Filtern: Daten nicht in der View AWT, Swing, JavaFX & SWT 2
S JTable Bug - eingegebene Daten werden falsch geparst :( AWT, Swing, JavaFX & SWT 4
hdi Swing JTable: Löschen vom Daten im Model AWT, Swing, JavaFX & SWT 7
U JTable mit Daten aus einer HashMap füllen AWT, Swing, JavaFX & SWT 8
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
B JTable: Wie speichert man manuell eingegebene Daten ausTable AWT, Swing, JavaFX & SWT 2
A JTable Vector mit Daten Ordnen bei setAutoCreateRowS AWT, Swing, JavaFX & SWT 8
S JTable Daten bearbeiten und Grauwertbild erzeugen! AWT, Swing, JavaFX & SWT 4
C JTable fehlende Daten AWT, Swing, JavaFX & SWT 2
raptorrs Daten aus JTable in JTextField übertragen AWT, Swing, JavaFX & SWT 11
G JTable Daten auslesen AWT, Swing, JavaFX & SWT 2
M JTable alte Daten vor Änderung abfangen AWT, Swing, JavaFX & SWT 11
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
M Auslesen veränderter Daten in einer jTable AWT, Swing, JavaFX & SWT 2
J jTable Daten werden nicht sofort sichtbar AWT, Swing, JavaFX & SWT 5
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
vogella JTable - Hinzufügen von Datensätzen und Ändern von Daten AWT, Swing, JavaFX & SWT 2
D JTable und ungültige Daten AWT, Swing, JavaFX & SWT 2
F JTable Daten aktualisieren AWT, Swing, JavaFX & SWT 2
F JTable Daten übernehmen AWT, Swing, JavaFX & SWT 2
D Daten über Button-Druck in JTable einfügen AWT, Swing, JavaFX & SWT 7
R nur bestimmte Daten in JTable anzeigen lassen? AWT, Swing, JavaFX & SWT 3
L JTable und Daten aus einer ArrayList AWT, Swing, JavaFX & SWT 6
D JTable zum Einfügen/Löschen/Editieren von Daten AWT, Swing, JavaFX & SWT 5
J JTable / Model Daten verändern AWT, Swing, JavaFX & SWT 5
M JTable zeigt daten nicht aktuell an AWT, Swing, JavaFX & SWT 4
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
L Checkbox in JTable (again), bei true Daten in Header AWT, Swing, JavaFX & SWT 7
G Problem mit JTable / mit dem Eintragen der Daten aus Vector AWT, Swing, JavaFX & SWT 4
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
V Daten ins JTable laden bei Start der GUI AWT, Swing, JavaFX & SWT 6
M Daten aus Datenbank ins JTable einfügen AWT, Swing, JavaFX & SWT 4
V Daten im JTable speichern AWT, Swing, JavaFX & SWT 11
G JTable daten auslesen AWT, Swing, JavaFX & SWT 6
M Daten in JTable aus DB schreiben ? AWT, Swing, JavaFX & SWT 16
H Daten aus einer JTable in einer Datei speichern AWT, Swing, JavaFX & SWT 10
D Merken, daß Daten in der JTable sich geändert haben... AWT, Swing, JavaFX & SWT 2
L Daten mittels ObjectInputStream ins JTable AWT, Swing, JavaFX & SWT 7
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Daten von Controller zu Controller übertragen AWT, Swing, JavaFX & SWT 7
D Columns unabhängig voneinander mit Daten füllen JavaFx AWT, Swing, JavaFX & SWT 1
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
T Anbinden der Tabelle an die Daten AWT, Swing, JavaFX & SWT 5
F JavaFX Tabelle mit Daten füllen AWT, Swing, JavaFX & SWT 9
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX Daten zwischen Controller "austauschen" AWT, Swing, JavaFX & SWT 65
B AWT Bot um Daten auf Website einzugeben und die Antwort zu bekommen AWT, Swing, JavaFX & SWT 2
L Daten bearbeiten ohne GUI zu blockieren - daten haltung/zurück geben AWT, Swing, JavaFX & SWT 15
ralfb1105 Swing JComboBox update der Daten AWT, Swing, JavaFX & SWT 8
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
K TreeTableView (cellFactory) - wie Daten in Spalten einfügen AWT, Swing, JavaFX & SWT 0
J TableView Daten werden nicht ausgegeben AWT, Swing, JavaFX & SWT 9
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
S JavaFX (Best Practise) Daten zwischen Controllern austauschen AWT, Swing, JavaFX & SWT 1
thet1983 JavaFX TableView Objekt Daten anzeige AWT, Swing, JavaFX & SWT 2
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
Tort-E JavaFX Daten an WebView Komponente AWT, Swing, JavaFX & SWT 1
M Java FX Daten an Controller übergeben AWT, Swing, JavaFX & SWT 3
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JavaFX Von FXML-Controllerdatei Daten zurückgeben AWT, Swing, JavaFX & SWT 6
F JavaFX Daten aus Tabelle in ComboBox AWT, Swing, JavaFX & SWT 9
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
S SWT In Listen den Einträgen Daten zuordnen AWT, Swing, JavaFX & SWT 2
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
J valueChanged()-Methode liefert unbrauchbare Daten AWT, Swing, JavaFX & SWT 4
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben