如果我使用Skin,Control和Behavior类创建自定义控件,是否可以在Java Scene Builder中显示我的自定义属性?如果有人已经这样做了你能解释一下吗?我在Skin和Control子类中都有属性但没有成功。
由于
JEC
编辑1:
所以其他人可以跟随,这里是一个样本'控制' Scene Builder能够检测到的类。
public class DisplayControl extends Control
{ private ObjectProperty m_BackgroundColor;
public DisplayControl()
{
m_Skin = new DisplaySkin(this);
m_BackgroundColor = new SimpleObjectProperty<>(new Color(0.5,
0.5,
0.5,
1));
setSkin(m_Skin);
}
public ObjectProperty<Color> backgroundColor()
{
return m_BackgroundColor;
}
/**
* @return the m_BackgroundColor
*/
public Color getBackgroundColor()
{
return m_BackgroundColor.get();
}
/**
* @param BackgroundColor the BackgroundColor to set
*/
public void setBackgroundColor(Color backgroundColor)
{
if (backgroundColor != m_BackgroundColor.get())
{
m_BackgroundColor.set(backgroundColor);
m_Skin.setBackgroundColor(backgroundColor);
}
}
}
答案 0 :(得分:1)
使您的属性访问器方法遵循standard naming pattern。你应该
public class DisplayControl extends Control {
// ...
public ObjectProperty<Color> backgroundColorProperty() { ... }
public Color getBackgroundColor() { ... }
public void setBackgroundColor(...) { ...}
}
答案 1 :(得分:1)
如果您使用javafx.scene.paint.Paint而不是Color,则该值将在Scene Builder中可编辑
public class DisplayControl extends Control {
// ...
public ObjectProperty<Paint> backgroundColorProperty() { ... }
public final Paint getBackgroundColor() { ... }
public final void setBackgroundColor(final Paint color) { ...}
}