Currently, when viewTopRow is greater than the index of the last row, rendering crashes. I suggest either dynamically computing viewTopRow, returning the index of the last row if viewTopRow is higher.
java.lang.IndexOutOfBoundsException: Index -2 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:458)
at com.googlecode.lanterna.gui2.table.DefaultTableRenderer.calculateVisibleRows(DefaultTableRenderer.java:436)
at com.googlecode.lanterna.gui2.table.DefaultTableRenderer.drawComponent(DefaultTableRenderer.java:380)
at ...my code...
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.AbstractBasePane$ContentHolder$1.drawComponent(AbstractBasePane.java:449)
at com.googlecode.lanterna.gui2.AbstractBasePane$ContentHolder$1.drawComponent(AbstractBasePane.java:426)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.AbstractBasePane.draw(AbstractBasePane.java:81)
at com.googlecode.lanterna.gui2.AbstractWindow.draw(AbstractWindow.java:130)
at com.googlecode.lanterna.gui2.MultiWindowTextGUI.drawGUI(MultiWindowTextGUI.java:262)
at com.googlecode.lanterna.gui2.AbstractTextGUI.updateScreen(AbstractTextGUI.java:120)
at com.googlecode.lanterna.gui2.MultiWindowTextGUI.updateScreen(MultiWindowTextGUI.java:223)
at com.googlecode.lanterna.gui2.AbstractTextGUIThread.processEventsAndUpdate(AbstractTextGUIThread.java:85)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread.mainGUILoop(SeparateTextGUIThread.java:114)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread.access$000(SeparateTextGUIThread.java:44)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread$1.run(SeparateTextGUIThread.java:55)
Also:
SeparateTextGUIThreadjava.lang.IndexOutOfBoundsException: Index -2 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:458)
at com.googlecode.lanterna.gui2.table.DefaultTableRenderer.getPreferredSize(DefaultTableRenderer.java:298)
at com.googlecode.lanterna.gui2.table.DefaultTableRenderer.drawComponent(DefaultTableRenderer.java:355)
...my code...
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:264)
at com.googlecode.lanterna.gui2.Panel$DefaultPanelRenderer.drawComponent(Panel.java:223)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.AbstractBasePane$ContentHolder$1.drawComponent(AbstractBasePane.java:449)
at com.googlecode.lanterna.gui2.AbstractBasePane$ContentHolder$1.drawComponent(AbstractBasePane.java:426)
at com.googlecode.lanterna.gui2.AbstractComponent.draw(AbstractComponent.java:218)
at com.googlecode.lanterna.gui2.AbstractBasePane.draw(AbstractBasePane.java:81)
at com.googlecode.lanterna.gui2.AbstractWindow.draw(AbstractWindow.java:130)
at com.googlecode.lanterna.gui2.MultiWindowTextGUI.drawGUI(MultiWindowTextGUI.java:262)
at com.googlecode.lanterna.gui2.AbstractTextGUI.updateScreen(AbstractTextGUI.java:120)
at com.googlecode.lanterna.gui2.MultiWindowTextGUI.updateScreen(MultiWindowTextGUI.java:223)
at com.googlecode.lanterna.gui2.AbstractTextGUIThread.processEventsAndUpdate(AbstractTextGUIThread.java:85)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread.mainGUILoop(SeparateTextGUIThread.java:114)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread.access$000(SeparateTextGUIThread.java:44)
at com.googlecode.lanterna.gui2.SeparateTextGUIThread$1.run(SeparateTextGUIThread.java:55)
Currently, when
viewTopRow
is greater than the index of the last row, rendering crashes. I suggest either dynamically computing viewTopRow, returning the index of the last row if viewTopRow is higher.Also: