将自定义组件添加到SceneBuilder 2.0

我需要在窗格上有一个select监听器和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); } 

}

而且这个效果很好 – 但是我不能再使用SceneBuilder,因为我的FXML引用了这个PaneWithSelectionListener而不是Pane。 我不知道如何让我的自定义窗格进入SceneBuilder。 我已经看了其他的问题,他们都是FXML和控制器的组合 – 这只是一个窗格。

有没有人知道一种方法来做到这一点,或者也许在初始化时换一个PaneWithSelectionListener的窗格?

谢谢

如果问题只是使您的自定义类在SceneBuilder中可用,您可以通过以下步骤来完成:

  1. 将您的自定义类(以及任何支持类,如Annotation )捆绑为一个jar文件
  2. 在SceneBuilder中,激活左窗格顶部“库”旁边的下拉button: 在这里输入图像描述
  3. select“导入JAR / FXML文件…”
  4. select从第1步创build的Jar文件
  5. 确保您需要在SceneBuilder( PaneWithSelectionListener )中访问的类被选中
  6. 按“导入组件”
  7. 现在, PaneWithSelectionListener将出现在SceneBuilder的左侧窗格中的“自定义”下: 在这里输入图像描述

您会注意到SceneBuilder中的下拉菜单中有一个“自定义库文件夹”选项,您可以从中打开存储jar文件的文件夹。 对于快速选项,您可以将jar文件复制到此文件夹中,并在(短暂延迟之后)所包含的类将出现在“自定义”列表中。

Interesting Posts