import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class SampleController implements Initializable{
@FXML private Button b1;
@FXML private Label m;
// fxml에서 바로 입력한 함수 구현
public void generateRandom(ActionEvent event){
Random rand = new Random();
int myrand = rand.nextInt(50) + 1;
m.setText(Integer.toString(myrand));
}
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
m.setText("gkgkgk");
//자바 내에서 이벤트 함수 구현
b1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
handleB1(arg0);
}
});
}
public void handleB1(ActionEvent event) {
System.out.println("asd");;
}
}
이벤트를 등록할때 fxml 에서 2가지 방식이 있음
1. 태그에 onAction 속성으로 함수를 입력하는방식
2. 등록된 controller에서 입력하는는방식
javafx 이벤트 핸들러 작동 방식
위임형 방식이란 컨트롤에서 이벤트가 발생하면, 컨트롤이 직접 처리하지 않고 이벤트 핸들러에게 이벤트 처리를 위임하는 방식입니다. 예를 들어 사용자가 Button을 클릭하면 ActionEvent가 발생하고, Button에 등록된 EventHandler가 ActionEvent를 처리합니다.
EventHandler는 컨트롤에서 이벤트가 발생하면, 자신의 handle() 메소드를 실행시킵니다. handle() 메소드에는 윈도우 닫기, 컨트롤 내용 변경, 다이얼로그 띄우기 등의 다양한 코드를 작성할 수 있습니다.
출처: http://palpit.tistory.com/744 [palpit's log-b]