您是否可以在Java Scene Builder中使用自定义控件查看自定义属性?

时间:2014-10-07 20:21:57

标签: java javafx scenebuilder

如果我使用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);
    }
}

}

2 个答案:

答案 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) { ...}
}