首页 > 解决方案 > 如何在 javafx 表格视图中为一组单元格绘制边框

问题描述

我有一个样本表。
我需要根据输入显示一组表格单元格的边框,如下图所示: 关键是,边框位置是动态的,它基于表格的输入。我的表数据可能很大,它可以容纳 25 列和 500 行。我拥有的信息是起始单元格和结束单元格的行索引和列索引。

在此处输入图像描述

我不能使用updateItem()函数,因为updateItem()不会为未显示在tableview. tablecell加载表后,我无法访问该对象。

有没有办法setStyle在 tableview 加载后动态到 tableCells ?

标签: javafxtableview

解决方案


感谢提供不同见解的评论。我解决了这样的问题,

计算了我需要为其绘制边框的左上索引和右下索引。并像这样在表格单元格的 updateItem() 方法中使用这些值,

` if(tableCol.getTableView() != null) { A4CalculationIndexValues a4CalculationIndexValues = A4Calculation.A4LayoutDetails.get(tableCol.getTableView().getId()); if(a4CalculationIndexValues != null) { 整数 startRow = a4CalculationIndexValues.startRowColumnIndex.getRow(); 整数 startColumn = a4CalculationIndexValues.startRowColumnIndex.getColumn(); 整数 endColumn = a4CalculationIndexValues.endRowColumnIndex.getColumn(); 整数 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");
            }
        }
    }`

推荐阅读