当前位置: 首页 > 知识库问答 >
问题:

JavaFX tableview中水平网格线的消失

祁英哲
2023-03-14
.column-header-background { 
visibility: hidden; -fx-padding: -1em; 
}

.table-view {
-fx-table-cell-border-color: black;
} 

.table-view .table-row-cell {
-fx-border-width: 1;
}
public class StitchCell extends TableCell<ObservableList<Stitch>, Color> {

@Override 
protected void updateItem(Color color, boolean empty) {
    super.updateItem(color, empty);

    int r = (int) (color.getRed() * 255);
    int g = (int) (color.getGreen() * 255);
    int b = (int) (color.getBlue() * 255);


    if (empty || color == null) {
        this.setStyle("-fx-background-color: white");
    } else {
        this.setStyle("-fx-background-color: rgb(" + r + "," + g + "," + b + ")");
    }
}
}
protected TableView<ObservableList<Stitch>> call() throws Exception {
    pattern.setItems(stitchList);

    for (ObservableList<Stitch> row : stitchList) {

        for (int i= pattern.getColumns().size(); i<row.size(); i++){
            TableColumn<ObservableList<Stitch>, Color> column = new TableColumn<>();
            final int columnIndex = i ;
            column.setCellValueFactory( rowData -> 
                rowData.getValue() // the row value, i.e. an ObservableList<Stitch>
                    .get(columnIndex) // the Stitch for this cell
                    .getDisplayColorProperty() );

            column.setCellFactory(col -> new StitchCell());
            column.setEditable(true);
            column.setMinWidth(5);
            column.setPrefWidth(5);
            column.setMaxWidth(5);
            pattern.getColumns().add(column);
        }
    }
    pattern.setFixedCellSize(5);
    pattern.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    pattern.getSelectionModel().setCellSelectionEnabled(true);


    return pattern;
} // End Call

提前感谢!

共有1个答案

阙庆
2023-03-14

默认情况下,单元格具有以下样式:

.table-cell {
    -fx-padding: 0.166667em; /* 2px, plus border adds 1px */
    -fx-background-color: null;
    -fx-border-color: transparent -fx-table-cell-border-color transparent transparent;
    -fx-cell-size: 2.0em; /* 24 */
    -fx-text-fill: -fx-text-background-color;
}

默认情况下,唯一有颜色的边框是正确的(黑色)。

由于在单元格工厂中,您将背景色设置为not null,这与默认边框重叠。所以解决方法很简单,你只需要设置底部边框的颜色:

@Override 
protected void updateItem(Color color, boolean empty) {
    super.updateItem(color, empty);

    int r = (int) (color.getRed() * 255);
    int g = (int) (color.getGreen() * 255);
    int b = (int) (color.getBlue() * 255);

    if (empty || color == null) {
        this.setStyle("-fx-background-color: white; "
             + "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
    } else {
        this.setStyle("-fx-background-color: rgb(" + r + "," + g + "," + b + ");" 
             + "-fx-border-color: transparent -fx-table-cell-border-color -fx-table-cell-border-color transparent;");
    }

}
 类似资料:
  • 以下实例创建了一个基本的网格系统,在 PC 和平板设备上它是水平平铺的,在手机等小型设备上它是水平堆叠的。 实例<div class="row">   <div>     <p>本站</p>   </div>   <div>     <p>本站</p>   </div> </div> 提示: .small|medium|large-* 类中的数字指定了跨越的列数。所以, .small-1 跨越 1

  • 本文向大家介绍堆叠到水平Bootstrap 网格,包括了堆叠到水平Bootstrap 网格的使用技巧和注意事项,需要的朋友参考一下 以下是显示堆叠到水平Bootstrap网格的示例- 示例

  • 我正在寻找一种方法来画两条水平线在一个PlolyScatter图。我的x轴指数不固定,每次都在变化。所以我要找一条在y=5和y=18水平穿过图表的水平线 我在这里寻找解决方案,但不确定如何将布局与Plotly express一起使用 我的散点图代码:

  • 我需要在网格项目之间水平绘制线。 我做到了,但问题是网格项之间的空间 它不是连接项目,而是放置间距 xml文件中的GridLayout: 网格项布局: 我的代码如下: 我需要加入这些队伍……

  • 我有一个垂直的,使用。我希望每一列都居中,但列都从左边开始。在下面的图片中,你可以看到我在说什么。我用难看的配色方案来说明柱子和背景。绿色是中每个项目的背景,红色是本身的背景: http://imgur.com/a/J3HtF 我正在设置它: column_item.xml如下: 以下是recyclerview xml:

  • gridline(int $option = \Vtiful\Kernel\Excel::GRIDLINES_SHOW_ALL): self 网格线类型 const GRIDLINES_HIDE_ALL = 0; // 隐藏 屏幕网格线 和 打印网格线 const GRIDLINES_SHOW_SCREEN = 1; // 显示屏幕网格线 const GRIDLINES_SHOW_PRIN