Java 如何更改表列的伪类状态?
我正在尝试设置以下日历的样式,以便当它们所属的日期不属于当前月份(即3月26日至3月31日和5月1日至5月29日)时,Java 如何更改表列的伪类状态?,java,css,javafx,tableview,tablecolumn,Java,Css,Javafx,Tableview,Tablecolumn,我正在尝试设置以下日历的样式,以便当它们所属的日期不属于当前月份(即3月26日至3月31日和5月1日至5月29日)时,TableColumn标题为粉红色: 我扩展了TableView如下: public class DayTableView extends TableView<Appointment> { private static PseudoClass OFF_MONTH_PSEUDO_CLASS = PseudoClass.getPseudoClass("off-mont
TableColumn
标题为粉红色:
我扩展了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 .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
.day-table-view .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
}
但结果是:
所以我试着这样做:
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 .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
.day-table-view .table-column {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
}
但是TableColumn
s仅以浅青色格式化(它看起来就像第一个日历图像)
所以我尝试了这种风格:
.day-table-view {
-fx-font-size: 9 px;
-fx-background-color: lightcyan;
}
}
它起作用了,除了我只希望TableColumn
标题改变颜色,而不是TableColumn
s的背景:
因此,我尝试扩展TableColumn
:
但是正如您所看到的,没有任何
pseudoClassStateChanged
方法。因此我想知道我到底需要做什么才能使TableColumn
标题发生更改?使用查找如何
tableView.applyCss();
tableView.layout();
PseudoClass pseudoClass = PseudoClass.getPseudoClass("off-month");
tableView.lookupAll(".column-header").forEach(node -> {
node.pseudoClassStateChanged(pseudoClass, true);
});
使用查找如何
tableView.applyCss();
tableView.layout();
PseudoClass pseudoClass = PseudoClass.getPseudoClass("off-month");
tableView.lookupAll(".column-header").forEach(node -> {
node.pseudoClassStateChanged(pseudoClass, true);
});