Vertical ScrollBar in JTable verfälscht anzeigen.

Status
Nicht offen für weitere Antworten.

javasdann

Mitglied
Hallo,
ich möchte im Rahmen eines Dispatchers für einen ScrollPane mit einer JTable einen Vertical JScrollbar verfälscht anzeigen.
Wenn ich eine Tabelle mit 1000 Zeilen und in der JTable aber nur die Zeilen 100-200 anzeige, will ich den vertikalen ScrollBar so anpassen, daß es so aussieht, daß die Zeilen 100-200 angezeigt werden.

Ich habe 2 Lösungsansätze überlegt:

1. Einen 2. Scrollbar anzeigen, der entsprechend die Position anzeigt und den Vertical JScrollBar des ScrollPane ausblenden
Problem: Scrollbar wird nicht ausgeblendet
Code:
  tableScrollPane.getVerticalScrollBar().setVisible(false)
klappt nicht

2. Den JScrollBar des ScrollPane bei Änderungen anpassen
Problem: Folgendes hat keine Wirkung - wird zwar aufgerufen, aber keine sichtbare Veränderung
Code:
  tableScrollPane.getVerticalScrollBar().getModel().addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
        	DefaultBoundedRangeModel sbm = new DefaultBoundedRangeModel(50, 10, 0, 10000);
        	tablePane.getVerticalScrollBar().setModel(sbm);
        }
      });

Hat jemand eine Lösung für diese Probleme?

Danke & Gruß,
Roger
 

Sky

Top Contributor
Was mir noch fehlt ist ein bißchen Hintergrundwissen zu deinem Projekt. Wieso werden z.B. nur die Zeilen 100 bis 200 geladen? Wie kann man erreichen, das andere Zeilen nachgeladen werden??

Ohne die o.g. Info's zu haben, kann ich Dir folgenden konzeptionellen Vorschlag machen:
- Dein TableModel gibt für die Zeilenanzahl 1000 zurück
- In deinem TableModel ist ein Array[1000] hinterlegt, in dem die Zeilen 100 bis 200 gefüllt sind
- Scrollen in der Tabelle führt zu dynamischen Nachladen.
 

javasdann

Mitglied
Was fehlt Dir denn noch an Hintergrundwissen?
Wie bereits erwähnt handelt es sich um einen Dispatcher. Das bedeutet packetweises Abarbeiten der Tabellen Zeilen, so daß immer nur 100 Zeilen "sichtbar" sind. Wenn ich 1.000.000 DB Zeilen habe und sie in einem select lese und in eine JTable einbaue kracht es (s. Schild Deines Smileys) - genau aus diesem Grund versuche ich diese Lösung zu realisieren.
 

Sky

Top Contributor
javasdann hat gesagt.:
Was fehlt Dir denn noch an Hintergrundwissen?
Wie bereits erwähnt handelt es sich um einen Dispatcher. Das bedeutet packetweises Abarbeiten der Tabellen Zeilen, so daß immer nur 100 Zeilen "sichtbar" sind. Wenn ich 1.000.000 DB Zeilen habe und sie in einem select lese und in eine JTable einbaue kracht es (s. Schild Deines Smileys) - genau aus diesem Grund versuche ich diese Lösung zu realisieren.

Verstehe ich das richtig, Du willst, wenn Du scrollst ein neues SELECT absetzen und die geladenen 100 Zeilen durch 'neue' 100 Zeilen ersetzen?
 

Sky

Top Contributor
Also, die ScrollBar deiner Tabelle orientiert sich daran, wie viele Zeilen die Tabelle hat (getRowCount).
Du musst Dir ein eigenes Model schreiben, welches einen RowCount von Anzahl Zeilen in der DB zurück gibt. Dann stimmt die Scrollbar. Du musst nach jedem scrollen nun berechnen, ob der Benutzer noch an einer Stelle ist, die im geladenem 100er Bereich liegt, ist dies nicht der Fall, so muss ein SELECT abgesetzt werden.
 

javasdann

Mitglied
Aber die Tabelle hat derzeit keine Informationen über die DB. Wie bewertest Du denn meine beiden Ansätze?
 

Sky

Top Contributor
javasdann hat gesagt.:
Aber die Tabelle hat derzeit keine Informationen über die DB. Wie bewertest Du denn meine beiden Ansätze?
Was ich noch nicht so ganz verstehe ist, wie Du in deinen "Fälschungen" die maximale Anzahl für die Größe der ScrollBar berechnen willst, wenn du keine Information über die DB hast.
 

javasdann

Mitglied
Ich ermittel den Wert mit select count und den übergebe ich dann. Das select macht nicht die JTable. Somit hat die JTable keine Informationen über die DB.
 

Sky

Top Contributor
javasdann hat gesagt.:
Ich ermittel den Wert mit select count und den übergebe ich dann. Das select macht nicht die JTable. Somit hat die JTable keine Informationen über die DB.
Trotzdem könntest Du den Wert der JTable mitteilen, wenn Du wolltest... ich persönlich finde den Ansatz über die JTable "sauberer".
 

javasdann

Mitglied
Und was ist mit den anderen Werten, die für die Berechnung der Scrollbar wichtig sind?
Erste der virtuellen Scrollbar: Im 2. Block z.B. von 200-300 darf die Scrollbar nicht oben beginnen!
 

Sky

Top Contributor
Ich habe mal ein Model geschrieben, wie ich mir das ganze Vorstellen könnte, guck mal, ob Du's als Ansatz verwenden kannst:
Code:
class DBTableModel
    implements TableModel {

  String[] colNames = {"Name1","Name2","Name3","Name4","Name5"};

  int minpos = -1;
  int maxpos = -1;

  String values[] = new String[100];

  public void loadFromDB(int startpos, int count) {
    System.out.println("loadFromDB " + startpos );
    minpos = startpos;
    maxpos = minpos + count;
    for (int i = 0; i < values.length; i++) {
      values[i] = String.valueOf( minpos + i );
    }
  }

  Vector listener = new Vector();

  public int getRowCount() {
    return 1000;
  }

  public int getColumnCount() {
    return 5;
  }

  public String getColumnName(int columnIndex) {
    return colNames[columnIndex];
  }

  public Class getColumnClass(int columnIndex) {
    return String.class;
  }

  public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
  }

  public Object getValueAt(int rowIndex, int columnIndex) {
    if ( rowIndex >= maxpos || rowIndex < minpos ) {
      loadFromDB(rowIndex,100);
    }
    String theValue = values[rowIndex-minpos];

    return theValue;
  }

  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    // todo
  }

  public void addTableModelListener(TableModelListener l) {
    listener.add(l);
  }

  public void removeTableModelListener(TableModelListener l) {
    listener.remove(l);
  }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Event Handling vertical ValueProperty() alter Wert gleich neuer Wert AWT, Swing, JavaFX & SWT 4
Burny91 Swing Vertical JSplitPane lässt sich nicht nach rechts verschieben AWT, Swing, JavaFX & SWT 2
F Text Vertical in Zellen von JTable AWT, Swing, JavaFX & SWT 3
I Vertical FlowLayout AWT, Swing, JavaFX & SWT 1
P vertical FlowLaoyut ? AWT, Swing, JavaFX & SWT 3
A JFormattedTextField - vertical misalignment problems... AWT, Swing, JavaFX & SWT 12
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
G Wie Scrollbar einfügen? AWT, Swing, JavaFX & SWT 1
A Swing Panel mit ScrollBar AWT, Swing, JavaFX & SWT 7
M JavaFX TextArea disabled - ScrollBar enabled AWT, Swing, JavaFX & SWT 3
H JavaFX Abstand rechts zur scrollbar AWT, Swing, JavaFX & SWT 1
I Swing Scrollbar AWT, Swing, JavaFX & SWT 2
W Scrollbar in Registerkarte AWT, Swing, JavaFX & SWT 1
M eigene horizontale Scrollbar AWT, Swing, JavaFX & SWT 1
M JTable horizontale scrollbar löschen AWT, Swing, JavaFX & SWT 3
G Scrollbar AWT, Swing, JavaFX & SWT 13
G Scrollbar für das Fenster einfügen AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
A Scrollbar gestalten AWT, Swing, JavaFX & SWT 2
E JavaFX ScrollBar in TableView bei Column Resize AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
5 Scrollbar AWT, Swing, JavaFX & SWT 4
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
H Swing JTextPane hat unästhetisches Scrollbar AWT, Swing, JavaFX & SWT 3
M Horizontal Scrollbar wird ignoriert AWT, Swing, JavaFX & SWT 10
M Swing Scrollbar im JFrame (JPanel?) AWT, Swing, JavaFX & SWT 6
W jTable Scrollbar Problem AWT, Swing, JavaFX & SWT 2
A Swing JPanel in JScrollBar scrollbar machen AWT, Swing, JavaFX & SWT 4
M SWT Table disabled und Scrollbar enabled AWT, Swing, JavaFX & SWT 11
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
S SWT GridLayout scrollbar machen? AWT, Swing, JavaFX & SWT 7
0 2D-Grafik Screenshot von ScrollBar-Inhalt AWT, Swing, JavaFX & SWT 2
D JList Scrollbar machen geht nicht AWT, Swing, JavaFX & SWT 4
D Scrollbar für Tabelle AWT, Swing, JavaFX & SWT 2
J Beliebtes Problem: Scrollbar in JTextArea AWT, Swing, JavaFX & SWT 4
S SWT ScrollBar Bug AWT, Swing, JavaFX & SWT 5
B GridLayout und scrollbar AWT, Swing, JavaFX & SWT 5
L Scrollbar übermalt AWT, Swing, JavaFX & SWT 2
H JList in JScrollPane -> ScrollBar ans Ende setzen AWT, Swing, JavaFX & SWT 5
M SWT keine Scrollbar bei widgets.List und GridLayout AWT, Swing, JavaFX & SWT 2
N Swing JTable Überschrift ohen scrollbar? AWT, Swing, JavaFX & SWT 2
R Scrollbar nur ohne STRG AWT, Swing, JavaFX & SWT 4
D Swing Spaltenköpfe verschieben sich nicht mit, wenn man an horizontaler Scrollbar zieht AWT, Swing, JavaFX & SWT 9
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
P JTextbox mit Scrollbar AWT, Swing, JavaFX & SWT 6
Roumeo Swing jTable mit Scrollbar AWT, Swing, JavaFX & SWT 13
D Swing [Erledigt]Panel mit ScrollBar , anpassbare Größe AWT, Swing, JavaFX & SWT 15
velocity Swing JList Scrollbar passt sich an AWT, Swing, JavaFX & SWT 4
S Scrollbar in einem JTabbedPane AWT, Swing, JavaFX & SWT 4
slawaweis JXTreeTable, jede Spalte einzeln scrollbar machen? AWT, Swing, JavaFX & SWT 2
Spot84 scrollbar die linksbündig angezeigt wird nur anzeigen wenn sie gebraucht wird AWT, Swing, JavaFX & SWT 5
K Größe einer Scrollbar im Dialogfenster ändern AWT, Swing, JavaFX & SWT 2
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
T JList ScrollBar AWT, Swing, JavaFX & SWT 2
T ScrollBar aus ScrollPane verstecken AWT, Swing, JavaFX & SWT 2
J JList ohne vertikale Scrollbar AWT, Swing, JavaFX & SWT 3
M Scrollbar anpassen (Position) AWT, Swing, JavaFX & SWT 6
T Scrollbar wird nicht angezeigt - aber warum? AWT, Swing, JavaFX & SWT 3
O ScrollBar.setValue(int value); ? AWT, Swing, JavaFX & SWT 3
A JTable Header + ScrollBar AWT, Swing, JavaFX & SWT 4
N eine Zeichnung scrollbar machen AWT, Swing, JavaFX & SWT 4
DeeDee0815 JDesktopPane scrollbar AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Problem mit Scrollbar AWT, Swing, JavaFX & SWT 10
S JTextArea soll mit Scrollbar ausgestattet sein AWT, Swing, JavaFX & SWT 4
Tom299 JScrollPane(JTextArea) Scrollbar soll am Anfang stehen AWT, Swing, JavaFX & SWT 2
S ScrollBar, bitte helft mir! AWT, Swing, JavaFX & SWT 9
G ScrollBar mit Frame verbinden? AWT, Swing, JavaFX & SWT 8
G Scrollbar hinzufügen AWT, Swing, JavaFX & SWT 10
C Grafikkomponente und Scrollbar AWT, Swing, JavaFX & SWT 5
N Scrollbar zu einem Dialog hinzufügen AWT, Swing, JavaFX & SWT 4
M Scrollbar AWT, Swing, JavaFX & SWT 4
L scrollbar von rot nach greun AWT, Swing, JavaFX & SWT 2
L Mehrere Scrollbar objekte miteinander verbinden AWT, Swing, JavaFX & SWT 3
G Wieso wird meine Scrollbar nicht angezeigt? AWT, Swing, JavaFX & SWT 3
M Scrollbar AWT, Swing, JavaFX & SWT 1
W Rat zur GUI - Scrollbar (SWT) AWT, Swing, JavaFX & SWT 2
A SWT: Group Scrollbar machen. AWT, Swing, JavaFX & SWT 5
G Scrollbar größe regeln AWT, Swing, JavaFX & SWT 18
A vertikale Scrollbar AWT, Swing, JavaFX & SWT 6
lhein Breite der Scrollbar in einer Combobox ändern AWT, Swing, JavaFX & SWT 5
K Mouse Events der Scrollbar/pane AWT, Swing, JavaFX & SWT 2
S JTextArea mit Scrollbar,append Text mit Fokus? AWT, Swing, JavaFX & SWT 5
A Update von Frameinhalt und Scrollbar AWT, Swing, JavaFX & SWT 11
M JTextPane mit ScrollBar AWT, Swing, JavaFX & SWT 5
K Scrollbar funzt net :-/ AWT, Swing, JavaFX & SWT 4
T JScrollPane Scrollbar-Position AWT, Swing, JavaFX & SWT 2
R JScrollPane die ScrollBar manipulieren ? AWT, Swing, JavaFX & SWT 3
S keine ScrollBar AWT, Swing, JavaFX & SWT 15
lin Startposition einer ScrollBar AWT, Swing, JavaFX & SWT 2
S scrollbar AWT, Swing, JavaFX & SWT 2
D JList ohne Scrollbar-ich weiss es ist durchgelutscht,aber. AWT, Swing, JavaFX & SWT 3
G Bei JScrollpane statt Scrollbar eine Vorschau verwenden AWT, Swing, JavaFX & SWT 3
B einzelne Zellen scrollbar machen innerhalb einer Tabelle AWT, Swing, JavaFX & SWT 3
D Scrollbar AWT, Swing, JavaFX & SWT 6
Student JTable - eine fixe Spalte, der Rest scrollbar AWT, Swing, JavaFX & SWT 18
P Scrollbar/Pane auch mit negativen x,y - Werten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben