Por que o SceneBuilder tem o componente com.gluonhq.charm.glisten.control.AutoCompleteTextField se ele não pode ser adicionado aos projetos?

Olá. Notei o componente com.gluonhq.charm.glisten.control.AutoCompleteTextField no Scene Builder, porém notei também que é um componente que não vem por padrão com o JavaFX. Alguém sabe me dizer porque o Scene Builder possui um componente que não é padrão? E onde eu posso encontrar a biblioteca dele?

Scene Builder não é o software que você utiliza pra montar a tela da aplicação com Drag n’ Drop? Talvez é esse que sua IDE está utilizando: Scene Builder GluonHQ

Sim. Mas por que ele tem um componente que não é padrão? Onde eu encontro a biblioteca dele para adicionar no meu projeto?

Ele tem por liberalidade de quem o desenvolveu. Assim como você pode criar algo e colocar lá o que quiser.
Customizar é uma maneira de garantir “exclusividade”, em todas as situações, desde para atender a algo que ninguém mais atende ou para poder cobrar por isso ou ambos.

1 curtida

Pela lógica, o Scene Builder adiciona componentes próprios nas interfaces que ele constrói, seja para facilitar nosso desenvolvimento, seja para eles terem acesso ao componente enquanto você desenvolve para fazer algum tipo de monitoramento/debug melhor, ou qualquer outra coisa do gênero.

Acredito que se você utilizar o Scene Builder para compilar tua interface, ele já vai empacotar os componentes necessários para você. Mas se você quer baixar, ali no link que eu mandei, tem um botão verde Download Now. Na página que abre, lá embaixo, tem um link Scene Builder Kit, um jar para download. Provavelmente ali tem o que você precisa.

EDIT: Baixei o jar e dei uma olhada no que tem dentro. Tem isso que você falou:

com/oracle/javafx/scenebuilder/kit/library/builtin/Gluon_AutoCompleteTextField.fxml

Para quem tiver curiosidade: para listar o conteúdo de um jar, basta fazer:

jar -tf nomeDoJar.jar
1 curtida

Valeu, era realmente isso que eu queria. Porém mesmo com o .jar no meu Buildpath, eu recebo esta exceção:

Caused by: java.lang.ClassNotFoundException: com.gluonhq.charm.glisten.control.AutoCompleteTextField
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2916)
	at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2905)
	at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2846)
	... 20 more
Exception running application com.tkfentretenimento.meusdados.view.Test

Que legal. Se eu quiser criar um componente personalizado também, eu posso adiciona-lo no Scene Builder?

Naquele “Executable Jar” o primeiro na lista de downloads, tem essa classe dentro. Só não acho que foi feito para utilização dessa forma… só tem o .class dentro. As IDEs hoje tem um mecanismo de engenharia reversa para transformar o .class em .java legível, mas não acredito que é para isso que serve aquele jar ali.

É, realmente, adicionando ESSE jar ao Buildpath funciona, porém esse é o .jar do programa certo? Então eu realmente devo importar o próprio Scene Builder para meu Buildpath?

Pois é, por isso que eu acho que não serve pra isso. Talvez eles não queiram que os componentes deles sejam utilizados de qualquer forma, fora do Scene Builder.

Dá pra pegar só a classe (e suas herdeiras e super classes), porém, quando eu tentei, apareceu um erro nada a ver em uma das expressões lambdas e o Eclipse não deu nenhuma solução.