2014-10-07 64 views
2

如果我使用Skin,Control和Behavior類創建自定義控件,是否可以在Java Scene Builder中顯示我的自定義屬性?如果有人已經這樣做了,你能解釋一下嗎?我在Skin和Control子類中都有屬性,但沒有成功。您是否可以在具有自定義控件的Java Scene Builder中看到自定義屬性?

感謝

JEC

編輯1:

,以便其他人可以按照沿,這裏是一個樣本 '控制' 類場景生成器能夠檢測。

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

好吧,我想我有這部分想通了。所以你需要在'Control'類中擁有這個屬性。確保'Control'類的jar已構建,然後導入到Scene Builder中。然後,在放置「控制」後,屬性將在「屬性」窗口的「自定義」下列出。在我的情況下,它的顏色和字段仍然是不可編輯的,所以我仍在處理這個問題。 – jecjackal 2014-10-07 22:54:34

回答

1

讓你的屬性訪問方法遵循standard naming pattern。你應該有

public class DisplayControl extends Control { 

// ... 

    public ObjectProperty<Color> backgroundColorProperty() { ... } 
    public Color getBackgroundColor() { ... } 
    public void setBackgroundColor(...) { ...} 
} 
+0

工作。我仍然無法直接在SceneBuilder中編輯顏色,但至少在那裏。謝謝 – jecjackal 2014-10-09 11:05:51

1

如果你使用javafx.scene.paint.Paint而不是顏色的,該值將是編輯在場景生成器

public class DisplayControl extends Control { 

    // ... 

    public ObjectProperty<Paint> backgroundColorProperty() { ... } 
    public final Paint getBackgroundColor() { ... } 
    public final void setBackgroundColor(final Paint color) { ...} 
} 
相關問題