Я новичок в JavaFX и ControlsFX.ControlsFX SpreadsheetView rowspan IndexOutOfBoundsException
Я пытаюсь создать очень простой SpreadsheetView с помощью библиотеки ControlsFX. Ниже функции для заполнения и создания SpreadsheetView:
private fun spreadSheetFunc() : SpreadsheetView {
val rowCount = 15
val columnCount = 10
val grid = GridBase(rowCount, columnCount)
val rows = FXCollections.observableArrayList<ObservableList<SpreadsheetCell>>()
var list = FXCollections.observableArrayList<SpreadsheetCell>()
list.add(SpreadsheetCellType.STRING.createCell(0, 0, 1, 1, "row0-col0"))
list.add(SpreadsheetCellType.STRING.createCell(0, 1, 2, 1, "row0-col1"))
list.add(SpreadsheetCellType.STRING.createCell(0, 2, 1, 1, "row0-col2"))
rows.add(list)
list = FXCollections.observableArrayList()
list.add(SpreadsheetCellType.STRING.createCell(1, 0, 1, 1, "row1-col0"))
//commenting row1-col1 as row0-col1 has a rowspan of 2
//list.add(SpreadsheetCellType.STRING.createCell(1, 1, 1, 1, "row1-col1"))
list.add(SpreadsheetCellType.STRING.createCell(1, 2, 1, 1, "row1-col2"))
rows.add(list)
list = FXCollections.observableArrayList()
list.add(SpreadsheetCellType.STRING.createCell(2, 0, 1, 1, "row2-col0"))
list.add(SpreadsheetCellType.STRING.createCell(2, 1, 1, 1, "row2-col1"))
list.add(SpreadsheetCellType.STRING.createCell(2, 2, 1, 1, "row2-col2"))
rows.add(list)
list = FXCollections.observableArrayList()
list.add(SpreadsheetCellType.STRING.createCell(3, 0, 1, 1, "row3-col0"))
list.add(SpreadsheetCellType.STRING.createCell(3, 1, 1, 1, "row3-col1"))
list.add(SpreadsheetCellType.STRING.createCell(3, 2, 1, 1, "row3-col2"))
rows.add(list)
grid.setRows(rows)
return SpreadsheetView(grid)
}
При управлении это, я получаю следующее сообщение об ошибке:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 at java.util.ArrayList.rangeCheck(ArrayList.java:653)
Я знаю его не случилось, потому что я не добавляя никакого значения для RowIndex = 1 colIndex = 1 (см. прокомментированную строку) ... но это то, что я хочу.
row0-col1 has a rowspan of 2
, что должно означать, что даже если мой row1-col1 отсутствует, проблем не должно быть.
Почему ControlsFX автоматически не заботится об этом?
Если я раскомментировать эту строку, я получаю следующий результат:
Edit 1:
Кроме того, я нашел еще один вопрос, когда Объединение столбцов/RowSpan занимает всю толщу/row в SpreadsheetView, а затем, когда один нажимает клавишу со стрелкой для перехода к ячейкам, вы получаете ошибку:
Описанная ситуация возникает при нажатии правой клавиши со стрелкой (Даже если их не клетка справа)