我正在尝试设置以下日历的样式,以便当TableColumn
标头所属的日期不属于当前月份(即3月26日-3月31日和5月1日-5月29日)时是粉红色的:
我这样扩展TableView
:
public class DayTableView extends TableView<Appointment> {
private static PseudoClass OFF_MONTH_PSEUDO_CLASS = PseudoClass.getPseudoClass("off-month");
public DayTableView() {
getStyleClass().add("day-table-view");
}
private BooleanProperty offMonth = new BooleanPropertyBase(false) {
public void invalidated() {
pseudoClassStateChanged(OFF_MONTH_PSEUDO_CLASS, get());
}
@Override
public Object getBean() {
return this;
}
@Override
public String getName() {
return "off-month";
}
};
public void setOffMonth(boolean b) {
offMonth.set(b);
}
}
并添加以下样式:
.day-table-view {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
.day-table-view:off-month {
-fx-font-size: 9 px;
-fx-background-color: pink;
}
但这是结果:
所以我尝试了如下样式:
.day-table-view .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
.day-table-view .table-column:off-month {
-fx-font-size: 9 px;
-fx-background-color: pink;
}
但是
TableColumn
仅采用浅青色格式(看起来像第一个日历图像。所以我尝试了这种样式:
.day-table-view .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
.day-table-view:off-month .table-column {
-fx-font-size: 9 px;
-fx-background-color: pink;
}
它起作用了,除了我只希望
TableColumn
标头更改颜色,而不是TableColumn
的背景:所以我尝试扩展
TableColumn
:但是如您所见,没有
pseudoClassStateChanged
方法。所以我想知道到底要做什么才能仅更改TableColumn
标头? 最佳答案
如何使用lookup
?
tableView.applyCss();
tableView.layout();
PseudoClass pseudoClass = PseudoClass.getPseudoClass("off-month");
tableView.lookupAll(".column-header").forEach(node -> {
node.pseudoClassStateChanged(pseudoClass, true);
});
.table-view .column-header:off-month {
-fx-background-color: pink;
}
关于java - 如何更改表列的伪类状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43696580/