PropertySheet Editor JavaFX中的多个场景节点

时间:2016-05-13 11:40:49

标签: java javafx controlsfx propertysheet

我想将复选框和文本字段添加到PropertySheetControlsFX库)的一个属性中。是否有可能?所以,我只需要将一些GUI元素添加到一个PropertyEditor,例如复选框+按钮,复选框+标签,复选框+文本字段等。是否可以覆盖PropertyEditor来执行此操作? / p>

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

您也可以将多个节点包装在单个父节点内。[请参阅此处][1]

答案 1 :(得分:0)

由我自己解决。我试图将checkbox + combobox添加到HBox。下面的代码,它的工作原理。

    public static final <T> PropertyEditor<?> createCheckBoxLinkEditor(PropertySheet.Item property,
        final Collection<T> choices) {
    ComboBox<T> comboBox = new ComboBox<T>();
    comboBox.setCellFactory((ListView<T> p) -> new ListCell<T>() {
        @Override
        protected void updateItem(T item, boolean empty) {
            super.updateItem(item, empty);
            if (item == null || empty) {
            } else if (item instanceof Class) {
                setText(((Class) item).getSimpleName());
            } else {
                setText(item.toString());
            }
        }
    });
    HBox hbox = new HBox(5);
    CheckBox checkBox = new CheckBox();
    hbox.getChildren().add(checkBox);
    hbox.getChildren().add(comboBox);
    //hbox.getA
    //comboBox.setConverter(value);
    return new AbstractPropertyEditor<T, HBox>(property, hbox) {

        {
            comboBox.setItems(FXCollections.observableArrayList(choices));
            //new AutoCompleteComboBoxListener(comboBox);
            new SelectKeyComboBoxListener(comboBox);
        }

        @Override
        protected ObservableValue<T> getObservableValue() {
            return comboBox.getSelectionModel().selectedItemProperty();
        }

        @Override
        public void setValue(T value) {
            comboBox.getSelectionModel().select(value);
        }
    };
}