[Java] JavaFX

클라우드·2024년 4월 12일
0

Java

목록 보기
14/20
post-thumbnail

1. JavaFX

  • Java에서 제공하는 표준 GUI library인 Swing을 대체하기 위해서 만들어진 library
  • 당연히 표준 library는 아니다.
  • 외부 library이고 다운로드 받아서 설치한 후 사용해야 한다.
  • 특별한 용도로 사용되며 일반적으로 사용되는 library는 아니다.
  • https://gluonhq.com/products/javafx/
  • Properties → Java build Path → library → module path → add external jars
  • run as configuration
  • arguments → VM ~~
  • 사용할 VM arguments
  • --module-path“C:\Program Files\Java\javafx-sdk-17.0.10\lib” --add-modules javafx.controls,javafx.fxml
--module-path "C:\Program Files\Java\javafx-sdk-17.0.10\lib" --add-modules javafx.controls,javafx.fxml
package javafxexam;

import javafx.event.EventHandler;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class JavaFXExample extends Application{

	@Override
	public void start(Stage primaryStage) throws Exception {
		// 화면구성
		
		// 1. Pane이라고 표현되는 layout을 만들어야 한다.
		// 여러종류의 Pane이 있는데 그 중 하나를 이용하면 된다.
		// Pane종류마다 버튼같은 component를 배치시키는 방법이 다르다.
		StackPane root = new StackPane();
		
		// 2. 화면에 보여줄 요소를 생성한다.
		Button btn = new Button();
		btn.setText("클릭");
		// 버튼이 클릭되면 무슨일을 할지 코드로 작성해야 한다.
		// 자바의 event model은 delegation model을 이용한다.
		// 이벤트처리를 위임한다는 의미로 delegation이라는 표현을 이용한다.
		// 버튼을 클릭하면 당연히 버튼이 event source가 된다.
		// event source는 이벤트가 발생한 객체를 지칭한다. => 버튼이 된다.
		// 그런데 이벤트가 발생했을때 이벤트의 처리(로직수행)를 event source가
		// 직접 처리하지 않고 별도의 객체를 이용하게 된다. => Listener객체라고 한다.
		// 당연히 해당 객체 안에는 이벤트를 처리하는 method가 있다.
		// 이 method를 흔히 handler라고 한다.
		// 마지막으로 event source에 listener를 부착시키는 과정이 필요하다.
		// 우리는 Action이라는 event를 사용하자.
		// Action이라는 event는 마우스 클릭, 입력상자에서 enter키 입력을
		// 지칭하는 event
		
		// 버튼(event source)에서 Action Event가 발생했을 때 처리하는
		// Event Handler객체를 만들어서 이벤트 처리를 하자.
		// 먼저 리스너객체를 만들어 보자.
		// 리스너객체도 당연히 종류가 있다.
		// 어떤 이벤트를 처리하느냐에 따라서 종류가 다르다.
//		btn.setOnAction(new EventHandler<ActionEvent>() {
//			
//			@Override
//			public void handle(ActionEvent arg0) {
//				// TODO Auto-generated method stub
//				System.out.println("너무 힘들어요!");
//			}
//		});

		btn.setOnAction((e) -> {
				// TODO Auto-generated method stub
				System.out.println("출력합니다.");
			}
		);
		
		// 3. Pane위에 표현할 Component를 위치시켜요!
		root.getChildren().add(btn);
		
		// 4. Scene을 생성해야 해요!
		Scene scene = new Scene(root, 300, 250);
		
		// 5. Stage에 Scene을 설정하면 되요!
		primaryStage.setTitle("첫 화면");
		primaryStage.setScene(scene);
		
		primaryStage.show();
		
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}
profile
안녕하세요 :)

0개의 댓글