【问题标题】:How to make TableView to not show absent rows?如何使 TableView 不显示缺失的行?
【发布时间】:2016-08-31 05:28:00
【问题描述】:

默认情况下,TableView 也会显示缺失行的颜色:

from here 为例,一个表只有 5 行。尽管如此,在视觉上它仍然显示第 6 行、第 7 行等的交错颜色。

如何避免这种情况?我不希望它可见,行已结束。

【问题讨论】:

  • 您是想去掉样式还是同时调整高度?
  • 我想删除这些行,以便没有任何样式可以重新出现它们。他们应该完全不存在。
  • 如您所见,“重复”问题没有可接受的答案,即它提供了解决方法但没有答案。

标签: java javafx tableview javafx-8


【解决方案1】:

使用 empty 伪类(参见 Cell CSS reference)从 css 中设置这些行的背景颜色:

例如

.table-row-cell:empty {
    -fx-background-color: transparent;
}

如果您自己使用 CSS 设置奇数/偶数单元格的样式,您可以简单地将 :filled 伪类添加到所有这些选择器中,使其仅适用于非空单元格(假设这些选择器仅适用于 Cells )。例如:

.table-row-cell:empty {
    -fx-background-color: transparent;
}

.table-row-cell:odd:filled {
    -fx-background-color: red;
}

.table-row-cell:even:filled {
    -fx-background-color: lightblue;
}

或者通过使用应用于表格行的选择器加上:empty选择器来简单地使用更具体的选择器:

.table-row-cell:empty:odd, .table-row-cell:empty:even {
    -fx-background-color: transparent;
}

.table-row-cell:odd {
    -fx-background-color: red;
}

.table-row-cell:even {
    -fx-background-color: lightblue;
}

【讨论】:

  • 我如何确定它不会干扰奇偶样式?
  • @Dims:您所说的“干扰”奇偶样式是什么意思?您是否希望颜色与最后一行的颜色不同(ob 相同)或其他颜色。您不确定选择器的优先级是否高于:odd:even 选择器?还是别的???
  • @Dims:在我的回答中添加了 2 个替代方案。如果可能,我建议使用:filled
  • 你也可以考虑设置modena使用的“查找颜色”。这也消除了歧义:.table-row-cell { -fx-control-inner-background: lightblue ; -fx-control-inner-background-alt: red ; }.table-row-cell:empty { -fx-background-color: transparent ;}
  • 我想提供一个控件,最终用户将根本无法设置空行的样式。他们应该真的不存在,而不仅仅是着色。
猜你喜欢
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
相关资源
最近更新 更多