-
javaFX 이벤트 핸들러고급 JAVA/FX 2020. 5. 22. 19:16
ex1) ActionEvent 를 처리하는 EventHandler<ActionEvent>를 등록하려면
=> setOnAction()메서드 사용
Button b = new Button();
b.setOnAction(new EventHandler<ActionEvent>(){
@Override
public vod handle(ActionEvent ae) { ... }
});
ex2) TableView 행을 클릭할 때 발생하는 MouseEvent를 처리하는 EventHandler<MouseEvent>를
등록하려면 => setOnMouseClicked() 메서듣 사용
TableView tv = new TableView();
tv.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent me) { ... }
});
ex3) 윈도우 우측 상단에 X(닫기) 버튼을 클릭했을 때 발생하는 WindowEvent를 처리하는
EventHandler<WindowEvent>를 등록하려면
=>setOnCloseRequest() 메서드 사용.
stage.setOnCloseRequest(new EventHandler<WindowEven>() {
@Override
public void handle(WindowEvent we) { ... }
});
*이벤트 핸들러는 하나의 메서드를 가진 함수적 인터페이스이다.
=> 람다식을 이용할 수 있다!
b.setOnAction( event -> { ... } );
tv.setOnMouseClicked( event -> { ... } );
stage.setOnCloseRequest( event -> { ... } );
public class AppMain extends Application { @Override public void start(Stage primaryStage) throws Exception { HBox hb = new HBox(); hb.setPrefSize(200, 100); hb.setAlignment(Pos.CENTER); hb.setSpacing(20); Button btn1 = new Button("버튼1"); btn1.setPrefWidth(100); btn1.setPrefHeight(50); // 버튼 크기 변경. btn1.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("버튼1"); } }); Button btn2 = new Button("버튼2"); btn2.setPrefWidth(50); btn2.setPrefHeight(100); // 버튼 크기 변경. btn2.setOnAction(event->System.out.println("버튼2")); hb.getChildren().addAll(btn1, btn2); Scene scene = new Scene(hb); primaryStage.setTitle("EventHandler"); primaryStage.setScene(scene); primaryStage.setOnCloseRequest(event->System.out.println("종료")); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
}
});
'고급 JAVA > FX' 카테고리의 다른 글
javaFX - 입력 컨트롤 (0) 2020.05.22 javaFX 컨트롤 - 버튼 컨트롤 (0) 2020.05.22 javaFX 속성 바인딩 (0) 2020.05.22 javaFX - 컨테이너 : AnchorPane 컨테이너 (0) 2020.05.22 javaFX fxml로딩과 Scene 작성 / JavaFX Scene Builder (0) 2020.05.22