Boa noite pessoal, gostaria de pedir uma orientação sobre JavaFx (estou iniciando nesta linguagem). A minha dúvida é como se registra um evento para um botão em JavaFX. Sei que quando se usa o fxml simplesmente se indica a classe que será utilizada para controle e indica-se no botão o nome do método que será executado. Ex.:
<BorderPane xmlns:fx="http://javafx.com/fxml" fx:controller="**classe_que_controlará_a_tela**">
<center>
<Button text="Clique aki" onAction="**#nome_do_metodo**"/>
</center>
<top>
</top>
</BorderPane>
Mas e agora como que funciona quando se trabalha diretamente com código como é que se faz:
Button botao = new Button("Login");
botao.setId("Botao_botao");
Tem alguma forma de se trabalhar via código da mesma forma que no fxml? E, na opinião de quem resolver responder, qual é a melhor forma de se trabalhar com JavaFx, via código ou via fxml?
Boa tarde Jubarius!
Seguinte, para utilizar a construção de ações em FXML para o Java, basta seguir os seguintes passos…
- Indicar o método da ação no FXML. Ex.: Colocar uma ação de clique (onAction) em um Button:
IMPORTANTE: Precisa ser escrita desta forma, com o “#” antes do nome do método!
- Criar um método protegido (protected) na sua classe Controller (Initializable), passando a Annotation @FXML, e também passando como parâmetro o tipo do evento (ActionEvent, MouseEvent, KeyEvent…)
@FXML
protected void testarAction(ActionEvent event) {
// TODO Ação do botão "testar"
}
IMPORTANTE: Tem que ser o MESMO nome do método comparado ao do FXML!
A parte legal é que não necessita instanciar o Button nesta classe, se sua intenção for apenas ter um clique para ele, pois o importante é a construção deste método. Ou seja, seu código pode ser enxugado mais ou menos assim:
[code]public class TestarController implements Initializable {
@Override
public void initialize(URL url, ResourceBundle bundle) {
// Vazio, por enquanto...
}
@FXML
protected void testarAction(ActionEvent event) {
// TODO ação do clique do botão "testar"
}
}[/code]
Qualquer dúvida, é só dizer! 
Eu acho que não Wellington, a dúvida foi como utilizar o conceito da criação de método no FXML no código Java. Se fosse simplesmente criar a ação através do botão, não teria muito sentido utilizar o conceito do FXML.
Mas de qualquer jeito, acho que nós dois conseguimos ajudar a esclarecer a dúvida!
Boa noite @Valkyrium e @wellington.nogueira
Primeiro queria agradecer, realmente eu não sabia como fazer a ligação direito entre o fxml e o código (realmente achava que tinha de instanciar o botão) e também não tinha idéia de como fazer isso via código (estou testando os dois jeitos para ver em qual me saio melhor).
Mais uma vez obrigado, estou começando agora com JavaFx e tem alguns detalhes que são um pouco confusos, agradeço mais uma vez uma ajuda.
Att.
Jubarius
Obs: Realmente fiz a pergunta lá no GUJ respostas, é que como lá não tinha tag para ria ou javafx fique em dúvida se podia postar perguntas sobre isso lá.
Obs2: @Valkyrium parabéns pelo artigo na MundoJ, foi com ele que comecei a me interessar pelo JavaFx
[quote=Jubarius]Boa noite @Valkyrium e @wellington.nogueira
Primeiro queria agradecer, realmente eu não sabia como fazer a ligação direito entre o fxml e o código (realmente achava que tinha de instanciar o botão) e também não tinha idéia de como fazer isso via código (estou testando os dois jeitos para ver em qual me saio melhor).
Mais uma vez obrigado, estou começando agora com JavaFx e tem alguns detalhes que são um pouco confusos, agradeço mais uma vez uma ajuda.
Att.
Jubarius
Obs: Realmente fiz a pergunta lá no GUJ respostas, é que como lá não tinha tag para ria ou javafx fique em dúvida se podia postar perguntas sobre isso lá.
Obs2: @Valkyrium parabéns pelo artigo na MundoJ, foi com ele que comecei a me interessar pelo JavaFx[/quote]
Boa noite @Jubarius!
É muito bom saber que o artigo foi útil para você, espero que esteja sendo para muitas pessoas, se incentivarem a iniciar no JavaFX, que promete um crescimento muito interessante!
No ínicio, esses detalhes no JavaFX se mostram um tanto confusos, mas com o tempo você pega a prática e vai inclusive gostar de utilizá-los, porque torna o código extremamente eficaz e organizado, pois ele trabalha com injeção de dependências de forma interna. Ou seja, chega de ficar instanciando diversas variáveis de componentes para utilizá-los na lógica! Apenas se preocupe em utilizar a Annotation @FXML para construir o componente em código, e também identificar todos os listeners da classe. Além da organização do conceito MVC, com a classe Application (View) e Initializable (Controller).
Bom, é isso aí! Qualquer dúvida, é só dar um toque!
Abraços! 
@Jubarius, você fez a mesma pergunta no GUJ Respostas:
http://www.guj.com.br/465-como-registrar-um-evento-de-botao-via-codigo-em-javafx
Te respondi lá.
Quanto a qual usar: a gosto do freguês! 
Ambas tem vantagens e desvantagens. Vai de você escolher (mas nem sempre isso é possível, pode ser que seja imposto
).
@Valkyrium pelo que entendi, ele sabe utilizar-se do fxml. Mas ele gostaria de saber como trabalhar utilizando codificação java na construção de telas.