Estou aprendendo JavaFX e deu um problema no evento de clicar no botão. Normalmente eu uso tratando o evento em uma classe anonima(não sei se é esse o nome) que ta mostrando no ‘btn2’, só que no site onde eu estou aprendendo tem mostra outros meios de tratar o um evento que e por uma classe externa(btn1) e dentro da própria classe(btn3).
Mas esta ocorrendo um erro e não esta executando por causa q ta falando q ta errado algumas linhas, só que a maneira que o NetBeans sugere para corrigir o erro é usando a classe Event e não o ActionEvent e eu teste com o Event e conseguiu executar mas quando clica não mostra a mensagem q era pra mostrar.
Código abaixo:
//classe principal
package javafx05;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaFX05 extends Application implements EventHandler{
@Override
public void start(Stage Janela) {
VBox raiz = new VBox(10);
Button btn1 = new Button("Classe Externa");
Button btn2 = new Button("Classe anonima");
Button btn3 = new Button("Dentro classe Pai");
btn1.setOnAction(new TratarEventos());
btn2.setOnAction(new EventHandler(){
@Override
public void handle(ActionEvent event) {
System.out.println("Chamou em uma Classe Anônima");
}
});
btn3.setOnAction(this);
raiz.getChildren().addAll(btn1,btn2,btn3);
Scene cena = new Scene(raiz,300,300);
Janela.setTitle("Tratando Eventos");
Janela.setScene(cena);
Janela.show();
}
public static void main(String[] args) {
launch(args);
}
@Override
public void handle(ActionEvent event) {
System.out.println("Chamou dentro da classe Pai JavaFX05!");
}
}
------------------//Arquivo com a classe externa ta assim//--------------------
package javafx05;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
public class TratarEventos implements EventHandler{
@Override
public void handle(ActionEvent event) {
System.out.println("Chamou em classe externa");
}
}