FXML:使用BuilderFactory的自定义组件
生活随笔
收集整理的這篇文章主要介紹了
FXML:使用BuilderFactory的自定义组件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當您想使用FXML時,您將需要能夠添加自己的組件。 這很容易,您只需要添加一個import語句。 FXML文件中以大寫字母開頭的元素將被解釋為實例,如果它們是Java Bean,則最重要:如果它們具有無參數的標準構造函數,則一切都很好。
如果沒有,那就更復雜了。 您將需要為加載器提供一個Builder和一個BuilderFactory。 例如,在FXExperience Tools中,使用了一個不錯的ColorPicker控件,該控件需要將Color傳遞給它的構造函數。 因此,在FXML中,我們想編寫如下代碼:
<?import com.fxexperience.javafx.scene.control.colorpicker.ColorPicker?><!-- ... --><ColorPicker fx:id="colorPicker" id="colorPicker" color="GREEN" />現在我們需要創建一個BuilderFactory和一個Builder:
import com.fxexperience.javafx.scene.control.colorpicker.ColorPicker; import javafx.fxml.JavaFXBuilderFactory; import javafx.scene.paint.Color; import javafx.util.Builder; import javafx.util.BuilderFactory;/**** @author eppleton*/ public class ColorPickerBuilderFactory implements BuilderFactory {public static class ColorPickerBuilder implements Builder<ColorPicker> {private Color color = Color.WHITE;private String id="colorPicker";public String getId() {return id;}public void setId(String id) {this.id = id;}public Color getColor() {return color;}public void setColor(Color color) {this.color = color;}@Overridepublic ColorPicker build() {ColorPicker picker = new ColorPicker(color);picker.setId(id);return picker;}}private JavaFXBuilderFactory defaultBuilderFactory = new JavaFXBuilderFactory();@Overridepublic Builder<?> getBuilder(Class<?> type) {return (type == ColorPicker.class) ? new ColorPickerBuilder() : defaultBuilderFactory.getBuilder(type);} }最后,在加載FXML時,您需要將工廠傳遞給加載器:
(Parent) FXMLLoader.load(TestTool.class.getResource("GradientEditorControl.fxml"), null,new ColorPickerBuilderFactory())就是這樣,如果我也可以使SceneBuilder理解這一點,那就太好了。
參考: Eppleton博客上的JCG合作伙伴 Toni Epple 使用BuilderFactory將自定義組件添加到FXML 。
翻譯自: https://www.javacodegeeks.com/2012/04/fxml-custom-components-using.html
總結
以上是生活随笔為你收集整理的FXML:使用BuilderFactory的自定义组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搬家后怎么重新设置路由器路由器搬家如何重
- 下一篇: XML解组基准:JAXB,STAx,Wo