将自定义组件添加到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中可用,您可以通过以下步骤来完成:
- 将您的自定义类(以及任何支持类,如
Annotation
)捆绑为一个jar文件 - 在SceneBuilder中,激活左窗格顶部“库”旁边的下拉button:
- select“导入JAR / FXML文件…”
- select从第1步创build的Jar文件
- 确保您需要在SceneBuilder(
PaneWithSelectionListener
)中访问的类被选中 - 按“导入组件”
- 现在,
PaneWithSelectionListener
将出现在SceneBuilder的左侧窗格中的“自定义”下:
您会注意到SceneBuilder中的下拉菜单中有一个“自定义库文件夹”选项,您可以从中打开存储jar文件的文件夹。 对于快速选项,您可以将jar文件复制到此文件夹中,并在(短暂延迟之后)所包含的类将出现在“自定义”列表中。