1. 기초 설명
- 모든 그래픽 인터페이스는 디스플레이를 하기 위해서는 어플리케이션의 프레임이 필요하다.
- 여기서 사용하는 프레임이 우리가 공부할 JFrame이다.
2. 주의 사항
- Swing으로 프로그래밍을 할떄는 GUI를 만들 때 Event Dispatch Thread(EDT)를 활용한다.
- 이게 혹시나 있을 데드락(deadlock)이나 race condition으로 프로그래밍이 멈추는 것을 막아준다.
- EDT를 간단히 설명하자면 EDT는 작업하는 사람이고, Queue에서 작업물을 1개씩 가져온다.
- 만약에 작업하는 사람이 여럿이고 작업물 1개를 동시에 작업하면, 갱신이나 덮어씌어질 수있다.
3. 코드
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
public class JFrameDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
System.out.println("Created GUI on EDT? "+
SwingUtilities.isEventDispatchThread());
JFrame f = new JFrame("Swing Paint Demo");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(250,250);
f.setVisible(true);
}
}
4. 코드 설명
- SwingUtilities.invokeLater(new Runnable(){ }은 Runnable 인터페이스의 익명으로 구현된 인스턴스를 만들고 이를 invokeLater에 전달하면서 큐에 넣고, 다른 쓰레드 EDT는 해당 큐에서 Runnable을 꺼내고 해당 실행 메소드를실행합니다.
- 사실 위의 코드는 우리가 메소드를 약속하듯이 쓰는 공식이라 생각해서 깊게 들여다볼 필요는 없다고 생각합니다.
- 여기서 우리가 JFrame을 생성하는 부분은 JFrame f = new JFrame("Swing Paint Demo")이며 제목을 Swing Paint Demo로 설정합니다.
- f.setSize(250,250)은 JFrame의 크기 조절, f.setVisible(true)는 true여야 보입니다 false면 안보입니다.
- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)은 JFrame에서의 나가기(X버튼)을 눌러도 이것을 설정하지 않으면 창이 꺼지지않습니다. 이것은 필수로 꼭꼭 넣어주세요!
5. 코드실행
- 위에 상단을 보면 Swing Paint Demo라고 제목이 추가된 것을 볼 수 있습니다.
- f.setSize의 크기를 다르게 하면 창의 크기가 다르게 보여질 수 있습니다.
- 현재 화면이 아무것도 없는건 컴포넌트들을 추가하지 않았기 때문이며 다음 글에서 알아보겠습니다.
'JAVA' 카테고리의 다른 글
[JAVA] CardLayout 패널 화면 쉽게 바꾸기 (0) | 2022.04.20 |
---|---|
[Java] 자바로 그림판 만들기(펜, 도형, 파일 읽기 쓰기, 색깔, 굵기) (0) | 2022.04.18 |
[Java] 이클립스와 Mysql 8.0 연동하기 (JDBC 연결) (1) | 2022.04.16 |
[Java] 버튼의 이벤트 처리로 선 그리기 (0) | 2022.04.15 |
[JAVA] 스택을 이용한 계산기(후위 표기법) (0) | 2022.04.12 |