如何在JavaFX中创建自定义控件

如何在JavaFX中创建自定义控件,java,controls,javafx-8,Java,Controls,Javafx 8,我想在JavaFX 8中创建一个自定义控件。它看起来像DatePicker或ColorPicker控件,但我想更改弹出内容以显示entier阶段,而不是在DatePicker中显示弹出列表,在ColorPicker中显示调色板。DatePicker和ColorPicker子类ComboBoxBase和ComboBoxPopupControl都是用于蒙皮的。我不知道这是否是正确的方法。那么,我怎样才能创建这种控件呢 这是一个起点: public class StagePopupControl ex

我想在JavaFX 8中创建一个自定义控件。它看起来像DatePicker或ColorPicker控件,但我想更改弹出内容以显示entier阶段,而不是在DatePicker中显示弹出列表,在ColorPicker中显示调色板。DatePicker和ColorPicker子类ComboBoxBase和ComboBoxPopupControl都是用于蒙皮的。我不知道这是否是正确的方法。那么,我怎样才能创建这种控件呢

这是一个起点:

public class StagePopupControl extends ComboBoxBase<String> {
    public StagePopupControl() {

    }

    @Override
    protected Skin<?> createDefaultSkin() {
        return new StagePopupControlSkin(this); // unfortunately the compiler shows an error "Make 'createDefaultSkin' return 'StagePopupControlSkin'"
    }
}


public class StagePopupControlSkin extends ComboBoxPopupControl<String> {

    AnchorPane root = new AnchorPane();


    public StagePopupControlSkin(ComboBoxBase comboBox, ComboBoxBaseBehavior behavior) {
        super(comboBox, behavior);
        root.getChildren().addAll(new DatePicker(), new TextArea());
    }

    @Override
    protected Node getPopupContent() {
        return root;
    }

    @Override
    public Node getDisplayNode() {
        return root;
    }
}
公共类StagePopupControl扩展了ComboBoxBase{
公共舞台控制(){
}
@凌驾
受保护的皮肤createDefaultSkin(){
返回新的StagePopupControlSkin(this);//不幸的是,编译器显示错误“Make'createDefaultSkin'返回'StagePopupControlSkin'”
}
}
公共类StagePopupControlSkin扩展ComboBoxPopupControl{
锚烷根=新锚烷();
公共StagePopupControlSkin(ComboBoxBase comboBox、ComboBoxBaseBehavior行为){
超级(组合框,行为);
root.getChildren().addAll(new DatePicker(),new TextArea());
}
@凌驾
受保护的节点getPopupContent(){
返回根;
}
@凌驾
公共节点getDisplayNode(){
返回根;
}
}

我想在tableview中将其用作单元格编辑,想象一个库存管理系统,当用户尝试填充产品时,会出现一个基于弹出组合框的窗口,显示一个产品列表供用户选择。这听起来很像一个组合框…我对JavaFX API很感兴趣,但我似乎很难弄清楚事件处理机制是如何设置的。我想在tableview中将其用作单元格编辑,想象一个库存管理系统,当用户尝试填充产品时,一个基于弹出式组合框的窗口,显示了一个供用户选择的产品列表。这听起来就像一个组合框…我对JavaFXAPI有很多了解,但我似乎很难弄清楚事件处理机制是如何设置的。