Problem
Ich möchte Daten dynamisch zu einem TableView hinzufügen und zur Position der neuen Daten blättern. Aber wenn die Zeilen in der TableView die ViewPort-Größe erreichen, bekomme ich das in der Konsole:
Apr 18, 2015 9:14:34 AM com.sun.javafx.scene.control.skin.VirtualFlow addTrailingCells INFO: Der Index überschreitet maxCellCount. Überprüfen Sie die Größe Berechnungen für die Klasse javafx.scene.control.TableRow
Ich denke, ich habe etwas falsch gemacht. Alles was ich getan habe, war das Oracle TableView Beispiel und füge folgendes hinzu:
%Vor%Das gleiche passiert, wenn Sie
verwenden %Vor%anstelle der Änderung der Liste.
Der Schuldige ist die Methode scrollTo. Dieselben Informationen / Fehler treten auf, wenn Sie den Zeilenindex mit der Methode scrollTo verwenden.
Frage
Wie fügen Sie einem TableView neue Elemente korrekt hinzu, sodass die Info / der Fehler nicht angezeigt wird?
Code
Hier ist ein vollständiges Beispiel. Der Tisch ist bereits ausgefüllt. Wenn Sie die Schaltfläche Hinzufügen drücken, wird die Größe des Darstellungsbereichs erreicht und die Info (oder der Fehler?) Wird in der Konsole angezeigt.
%Vor%Unterdrücken Sie die Warnung, indem Sie den Protokollmanager zurücksetzen:
%Vor% Dies wirkt sich auf den Logger der gesamten Anwendung aus. Wenn dies nicht gewünscht ist, ändern Sie den Protokolliergrad für die betroffene Klasse ( com.sun.javafx.scene.control.skin.VirtualFlow
) in Level.OFF
.
Siehe auch:
Da dies eine Warnmeldung ist, kann sie wahrscheinlich ignoriert und daher unterdrückt werden. Soweit ich das beurteilen kann, wird die neue Zeile erfolgreich hinzugefügt. Hier ist der beanstandete Code, der eingecheckt wurde, der, IMO, das Prinzip der geringsten Verwunderung verletzt:
Ich finde keine Lösung, aber das Problem ist nicht ScrollTo () -Methode zu verwenden, es ist immer passiert, wenn Sie nach unten scrollen (auch manuell) und erhöhen Sie die Fensterhöhe, wenn die Rolle verschwinden, ich weiß nicht, warum müssen Öffnen Sie ein Fehlerticket
Ich hatte diese Warnung vor, aber Sie müssen sich keine Sorgen machen darüber, wie erwähnt hier :
Dies geschieht, wenn die maximale Anzahl an zusätzlichen Zellen dies tun sollte Sie können immer in das Ansichtsfenster passen, wenn jede Zelle eine Höhe von 1 hat. Wenn der Index diese Anzahl überschreitet, wird der Offset nicht schnell erhöht genug oder überhaupt, was bedeutet, dass etwas mit der Zelle nicht stimmt Größenberechnung ( in Zeile 2.48: )
Dies könnte durch uns verursacht werden , weil wir schneller scrollen als der durchschnittliche Nutzer oder andere Dinge im RC-Code und in Ihrem Beispiel table.scrollTo( person);
scrollt noch schneller , besonders wenn Sie viele Zeilen hatten.