将自定义组件添加到SceneBuilder 2.0

pur*_*eon 15 javafx scenebuilder javafx-8

我需要在窗格上有一个选择侦听器和select方法,以便能够在单击节点时监视并显示突出显示.

我做了以下事情:

public class PaneWithSelectionListener extends Pane {

    private ObjectProperty<Annotation> selectedAnnotation = new SimpleObjectProperty<>();

    public PaneWithSelectionListener() { 
        super();
        selectedAnnotation.addListener((obs, oldAnno, newAnno) -> {
            if (oldAnno != null) {
                oldAnno.setStyle("");
            }
            if (newAnno != null) {
                newAnno.setStyle("-fx-border-color: blue;-fx-border-insets: 5;-fx-border-width: 1;-fx-border-style: dashed;");
            }
        });

        setOnMouseClicked(e->selectAnnotation(null));
    }

    public void selectAnnotation(Annotation ann){
        selectedAnnotation.set(ann);
    }
}
Run Code Online (Sandbox Code Playgroud)

这很有效 - 但是我不能再使用SceneBuilder了,因为我的FXML引用了这个PaneWithSelectionListener而不是Pane.我不确定如何将自定义窗格导入SceneBuilder.我已经看了其他问题,它们都是FXML和控制器的组合 - 这只是一个Pane.

有没有人知道这样做的方法,或者可能在初始化时交换Panea PaneWithSelectionListener

谢谢

Jam*_*s_D 20

如果问题只是在SceneBuilder中使您的自定义类可用,则可以通过以下步骤执行此操作:

  1. 将您的自定义类(以及任何支持类,如Annotation)作为jar文件捆绑
  2. 在SceneBuilder中,激活左窗格顶部"库"旁边的下拉按钮: 在此输入图像描述
  3. 选择"导入JAR/FXML文件..."
  4. 选择从步骤1创建的Jar文件
  5. 确保PaneWithSelectionListener选中您在SceneBuilder()中需要访问的类
  6. 按"导入组件"
  7. PaneWithSelectionListener 现在将出现在左窗格中"自定义"下的SceneBuilder中: 在此输入图像描述

您会注意到SceneBuilder中的下拉列表有一个"自定义库文件夹"选项,您可以从中打开存储jar文件的文件夹.对于快速选项,您只需将jar文件复制到此文件夹(并在短暂延迟后),所包含的类将显示在"自定义"列表中.

  • 我昨天确实尝试过,但是当我尝试加载它时,选择为空白。 (2认同)