개발 교육

11.03 <자바FX>

azure05 2023. 11. 4. 16:02

오늘은 자바 FX에 대한 기본 개념과 네트워크에 대해서 배워보았다.

 

자바 FX에 대한 기본 개념

JavaFX에서는 기본 틀이 있다.

 

 

JavaFX를 사용해주기 위해 먼저 application을 extends시켜주고, 

main 함수에서 launch();를 해줘야 한다 .

 

launch를 해주게 되면 미구현 메소드 start를 만들라는 에러가 뜨는데, 자동 수정 해주면 public void start(Stage arg0)이라는 메소드가 생성된다!

 

start메소드 안에 기본 3가지 영역이 있다 .

난 그것을 맨 윗 영역, 중간 영역, 맨 아래 영역으로 나누겠다.

 

1. 맨 위 영역에서는VBox 객체를 생성해주어야 한다. 

그래야 자바 파일을 실행했을 때, fx의 기능으로 하나의 창이 뜨게 된다.

이후 창의 사이즈도 설정해줄 수 있다.

VBox root = new VBox(); //vertical 세로배열, root를 이용해 세로길이 가로길이 설정가능
root.setPrefSize(800, 600); //이렇게 한다고 바로 적용되지는 않는다.

 

2. 중간 영역에서는 창에 뜨는 요소들을 추가해주면 된다. 

나의 경우에서는 버튼을 추가해주었다.

버튼을 추가하면서, 버튼의 이름 설정과 버튼을 클릭하게 되면 발생하는 이벤트도 추가해줄 수 있다.

setOnAction이 바로 이벤트 실행하게 하는 코드이고, 그 뒤에 new를 하고 자동완성 단축키를 입력하면 EventHandler코드가 형식대로 자동 완성 입력된다.

btn01.setOnAction(new
 EventHandler<ActionEvent>() 

 

 

그러고  public void handle(ActionEvent arg0) { 이 함수가 내부에 또 생성이 되는 데, 이 안에 이벤트 발생시 나타났으면 하는 코드를 입력해주면 된다. 아래의 코드는 버튼 1을 클릭시 콘솔창에 "클릭하였습니다"가 뜨도록 하였다.

@Override
public void handle(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("클릭하였습니다.");

 

 

중간영역의 맨 아랫부분에는 내가 추가 했던 요소들이 root(VBox)에 뜨게끔 하도록 아래와 같이 설정해주면 된다.

root.getChildren().add(btn01);  // 버튼 1개의 경우

또는 

root.getChildren().addAll(btn01,btn02,btn03);  // 버튼 여러개의 경우

 

 

 

3. 맨 아래 영역에는 Scene 설정만 해주면 된다. (전체 창이 실행 됨)

4줄만 입력해주면 arg0이 실행 된다.

Scene scene = new Scene(root);
arg0.setScene(scene);
arg0.setTitle("안녕하세요 ");
arg0.show();

 

 

 

 

 

 

 

전체 코드

public class Hello extends Application{

 

@Override

public void start(Stage arg0) throws Exception {

VBox root = new VBox(); //vertical 세로배열, root를 이용해 세로길이 가로길이 설정가능

root.setPrefSize(800, 600); //이렇게 한다고 바로 적용되지는 않는다.

//---------------------------------------------이 위에는 보통 고정되는 값들을 주로설정

 

//1번방법

// Button btn01 = new Button("버튼1"); //버튼의 연결고리를 잡아줘야함, 최소한 root 정도

// root.getChildren().add(btn01); //code의 체이닝, 체이닝할 경우 중간 난입이 안된다는 특징이 있다!

// Button btn02 = new Button("버튼2");

// root.getChildren().add(btn02);

 

// 2번방법

Button btn01 = new Button("버튼1");

btn01.setOnAction(new EventHandler<ActionEvent>() {

 

@Override

public void handle(ActionEvent arg0) {

// TODO Auto-generated method stub

System.out.println("클릭하였습니다.");

}

});

 

 

Button btn02 = new Button("버튼2");

btn02.setOnAction(new EventHandler<ActionEvent>() {

 

@Override

public void handle(ActionEvent arg0) {

// TODO Auto-generated method stub

System.out.println("클릭하였습니다.");

}

});

 

root.getChildren().addAll(btn01,btn02);

 

//----------------------------------------------------------

Scene scene = new Scene(root);

arg0.setScene(scene);

arg0.setTitle("안녕하세요 ");

arg0.show();

 

 

 

 

 

}

 

 

public static void main(String[] args) {

System.out.println("start");

launch(); // 부모의 launch함수가 start를 호출

 

}

}

 

 

이어서 네트워크에 대해 배운 내용을 정리해 보겠다.