我有一个实现
的控件@Override
public Control setLabel(Label label) {
label.setLabelFor(this);
return this;
}
@Override
public Label getLabel() {
return (Label) this.queryAccessibleAttribute(AccessibleAttribute.LABELED_BY);
}
标签不是Control的内部内容,而是附近的引用控件,而不是内部。
在调用setLabel之前,我需要在某些属性上绑定未来标签上的文本。像这样的东西
someStringProperty.bind(control.labelTextProperty());
怎么做?
我会尝试澄清这个问题。
对于Label,有属性labelForProperty(),因此可以在之前绑定setLabelFor方法。但对于像TextField这样的Control,我找不到像textPropertyForConnectedLabel这样的属性,只有 AFTER (Label)才能绑定this.queryAccessibleAttribute(AccessibleAttribute.LABELED_BY)不为空。
答案 0 :(得分:0)
我已经通过控制中的帮助中介属性解决了这个问题。
private StringProperty textLabelProperty = new SimpleStringProperty(""); /**
*
*/
public Control setLabel(Label label) {
if (label != null) {
label.setLabelFor(this);
textLabelProperty.bind(label.textProperty());
}
return this;
}
public StringProperty labelTextProperty() {
return textLabelProperty;
}