这是一个简单的类,我在javafx中持有ListView
class MyItem {
var active: Boolean = true
def toString = "Test"
}
我为MyItem
class MyCell extends ListCell[MyItem] {
override def updateItem(item: MyItem, empty: Boolean): Unit = {
super.updateItem(item, empty)
if(item != null) {
setText(item.toString)
if(item.active) setGraphic(g1) else setGraphic(g2)
}
}
}
我已将其设置在列表视图中,但我希望图形与active
var一起更改。如果这是摆动,我只需在更改时调用repaint
,但这不是一个选项。
有没有办法通知javafx变更?我应该以不同的方式构建事物吗?
答案 0 :(得分:0)
尝试将var active
设为BooleanProperty
并在ChangeListener
上添加active
。如果是在Java上,
修改模型
class MyItem {
private BooleanProperty active;
public MyItem() {
active = new SimpleBooleanProperty();
}
public BooleanProperty activeProperty() {
return active;
}
public void setActive(boolean active) {
this.active.set(active);
}
public boolean isActive() {
return active.get();
}
}
修改更新方法:
super.updateItem(item, empty);
if (item != null) {
setText(item.toString());
item.activeProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) setGraphic(g1);
else setGraphic(g2);
});
}