Loading...

JAVA / / 2022. 2. 4. 17:19

자바 42강. GUI JFrame

반응형

GUI(Graphical User Interface)를 배우는 이유는

이벤트 기반의 프로그램을 만들기 위해서이다.

 

여기서 이벤트 기반의 프로그램이라는 말은

사용자의 어떤 동작에 의해 반응하는 프로그램을 말한다.

 

사용자는 메서드를 호출하는 방법을 모르기 때문에

그래픽으로 서비스를 제공해주는 것이다.

 

이것을 위해 스레드가 기반이 되어야 한다.

 

자바의 GUI에는 2가지가 있다.

 

AWT(Abatract Windows Toolkit)

스윙(Swing)

 

AWT는 운영체제가 제공하는 자원을 빌려 쓰는 것이고,

스윙은 자체적으로 만드는 것이다.

 

그래서 AWT는 모든 운영체제에서 디자인이 모두 다르고

스윙은 모두 같다.

 

C#에서 많이 쓰는 GUI : WPF

C++에서 많이쓰는 GUI : MFC

3D GUI 최강 : 유니티

 

 


 

빨간 부분이 프레임(Frame)이고

파란 부분이 그림을 그릴 도화지인 패널(Panel)이라고 한다.

 

Frame : 전체 크기의 창 + 메뉴바

 

 

 

 

 

package site.metacoding.ex13;

import javax.swing.JFrame;

public class FrameTest {
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setSize(600, 400); // w, h
        f.setVisible(true); // 화면에 그림 그리기
    }
}

프레임을 종료해도 main이 종료가 안된다.

 

 

우선 Ctrl + C 해서 종료해준 다음

자동으로 종료되는 코드를 추가해준다.

닫기 버튼을 눌리면 main을 종료한다는 문장이다.

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

 

 프레임을 화면 중앙으로 배치한다.

setLocationRelativeTo(null);

 

 


앞으로 계속해서 프레임을 만들어줄 때

일일이 JFrame을 상속받아,

화면 중앙 배치, 닫기 버튼 클릭 시 main 종료와 같이

반복적으로 입력해줘야 하는 부분들이 있다.

 

귀찮은 일을 줄이기 위해 MyFrame 클래스를 만들어

재사용 해주자.

 

package site.metacoding.ex13;

import javax.swing.JFrame;

public class MyFrame extends JFrame {
	public MyFrame() {
		System.out.println("MyFrame 디폴트");
		setSize(600, 400); // w, h
		setLocationRelativeTo(null); // 프레임 화면 중앙 배치
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 닫기버튼 클릭시 main 종료
	}
}

 

이제 새로운 프레임을 만들 때마다

MyFrame을 상속시켜주면 되는 것이다.

 

 

 

 

[출처]

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com


메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 
반응형