Adicionando um componente personalizado ao SceneBuilder 2.0
Tenho a necessidade de ter um ouvinte de seleção e método de seleção em um painel para poder monitorar e apresentar um destaque quando um nó é clicado.
Eu fiz o seguinte:
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);
}
}
E isso funciona muito bem - no entanto, não consigo mais trabalhar com o SceneBuilder, pois meu FXML faz referência a issoPaneWithSelectionListener
ao invés dePane
. Não sei como obter meu painel personalizado no SceneBuilder. Eu olhei para outras perguntas e todas elas são uma combinação de FXML e Controladores - onde isso é apenas umaPane
.
Alguém sabe uma maneira de fazer isso, ou talvez troque oPane
paraPaneWithSelectionListener
no momento da inicialização?
obrigado