Как добиться рисования границы для набора ячеек в табличном представлении javafx - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть образец таблицы.Мне нужно показать границу для набора ячеек таблицы на основе ввода, как показано на следующем рисунке:enter image description hereКлюч заключается в том, что расположение границы является динамическим и основано на вводе в таблицу.Данные в моей таблице могут быть большими и содержать 25 столбцов и 500 строк.У меня есть информация об индексе строки и столбца начальной и конечной ячеек.

Я не могу использовать функцию updateItem(), так как updateItem() не будет вызываться для ячеек, которые не отображаются в tableview.Я не могу получить доступ к объекту tablecell после загрузки таблицы.Есть ли способ динамически setStyle для tableCells после загрузки табличного представления?

1 Ответ

0 голосов
/ 06 декабря 2018

Благодаря комментариям, которые дали другое понимание.Я решил проблему следующим образом:

вычислил левый верхний и правый нижний индексы, для которых мне нужно нарисовать границу.И использовал эти значения в методе updateItem () ячейки таблицы следующим образом:

`if (tableCol.getTableView ()! = Null) {A4CalculationIndexValues ​​a4CalculationIndexValues ​​= A4Calculation.A4LayoutDetails.get (tableCol.getTableView).GetId ());if (a4CalculationIndexValues! = null) {Integer startRow = a4CalculationIndexValues.startRowColumnIndex.getRow ();Integer startColumn = a4CalculationIndexValues.startRowColumnIndex.getColumn ();Integer endColumn = a4CalculationIndexValues.endRowColumnIndex.getColumn ();Integer endRow = a4CalculationIndexValues.endRowColumnIndex.getRow ();

            if (getIndex() == startRow &&  columnIndex >= startColumn && columnIndex <= endColumn) {
                if (getStyle().equalsIgnoreCase(""))
                    setStyle("-fx-border-width: 1 2 3 4; -fx-border-color: red white white white");
            }
            if (getIndex() >= startRow && getIndex() <= endRow && columnIndex == startColumn) {
                if (getStyle().equalsIgnoreCase(""))
                    setStyle("-fx-border-width: 1 2 3 4; -fx-border-color: white white white red");
            }
            if (getIndex() == endRow && columnIndex >= startColumn && columnIndex <= endColumn) {
                if (getStyle().equalsIgnoreCase(""))
                    setStyle("-fx-border-width: 1 2 3 4; -fx-border-color: white white red white");
            }
            if (getIndex() >= startRow && getIndex() <= endRow && columnIndex == endColumn) {
                if (getStyle().equalsIgnoreCase(""))
                    setStyle("-fx-border-width: 1 2 3 4; -fx-border-color: white red white white");
            }
        }
    }`
...