일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- javacript
- MongoDB
- JSON.stringify
- nextjs
- 참조에 의한 객체 복사
- 중첩 구조 분해
- 이메일 전송
- 객체
- 구조 분해 할당
- 카카오 소셜로그인
- nestjs
- Map
- 화살표 함수
- 캐러셀
- 자바스크립트
- context switch
- JavaScript
- 로그스태시
- 위크셋
- nodemailer
- nest
- TypeScript
- 카카오로그인
- react-slick
- JSON.parse
- Mongoose
- DB
- AGGREGATE
- 위크맵
- logstash
- Today
- Total
뚜sh뚜sh
GUI, AWT와 스윙(swing) 본문
GUI와 AWT, 스윙의 개념
- GUI(Graphical User Interface)
- 그래픽 환경, 모든 운영체제의 기본 환경
- 버튼, 이미지, 메뉴 등 제공
- AWT(Abstract Windowing Toolkit)
- 자바 초기 GUI 프로그래밍 도구
- 운영체제의 리소스 사용
- 스윙(swing)
- 순수 자바 컴포넌트 패키지
- 자체 리소스 사용, Jxxxx 클래스로 제공
컨테이너(Container)
- 컴포넌트를 포함하는 클래스
- AWT : Frame, Panel, Dialog, Window, Applet
- 스윙 : JFrame, JPanel, JDialog, JWindow, JApplet
컴포넌트(Component)
- 버튼, 이미지, 리스트 등
- 컴포넌트는 반드시 컨테이너에 포함됨
스윙을 위한 기본 패키지 포함문
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
스윙 프로그램 순서
- 1단계 : 프레임 생성
- JFrame = Frame + 메뉴 + 컨텐트 팬(컨테이너 클래스)
※ 컨텐트 팬은 컴포넌트가 연결
1. JFrame 객체를 생성하여 프레임을 생성하는 소스
- module-info.java 파일 코드(아래 import를 사용하기 위해 필요한 코드)
module test {
requires java.desktop;
requires java.sql;
}
- test2.java 파일 코드
package test2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame MainFrame = new JFrame();
MainFrame.setTitle("swing 연습");
MainFrame.setSize(200, 200);
MainFrame.setVisible(true);
}
}
2. JFrame을 상속하여 프레임을 생성하는 소스
package test2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class test2 extends JFrame {
test2() {
setTitle("swing 연습");
setSize(200, 200);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test2 MainFrame = new test2();
}
}
- 2단계 : 컴포넌트 연결
- 컨텐트 팬에 컴포넌트 추가 => 연결
- (위 글 upgrade) JDK 1.5부터는 JFrame에 직접 추가
- 레이아웃 관리자(FlowLayout, BorderLayout, GridLayout, CardLayout)
package test2;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class test2 extends JFrame {
test2() {
setTitle("swing 연습");
setSize(300, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 1) 버튼을 컨텍트 팬을 통해 추가하는 코드
// Container ContentPane = getContentPane();
// ContentPane.setLayout(null);
// JButton button = new JButton("test");
// button.setSize(70, 70);
// button.setLocation(50, 50);
// ContentPane.add(button);
// 2) JFrame을 통해 버튼을 추가하는 코드 JDK 1.5
this.setLayout(null);
JButton button = new JButton("test");
button.setSize(70, 40);
button.setLocation(50, 80);
this.add(button);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
test2 MainFrame = new test2();
}
}
- 자바 프로그램 종료 : System.exit(0)
- 스윙 프로그램 종료 : 닫기 버튼(X) - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- 3단계 : 이벤트 처리
- 이벤트 처리 => 리스너(listener)
- 리스너의 실체 => 인터페이스(이벤트 처리를 위한 메소드 정의)
레이아웃 관리자
- 컨테이너에 컴포넌트를 위치시키는 방법 => 레이아웃 관리자
- 기본 레이아웃 관리자 : setLayout() 메소드
- Window, JWindow(컨테이너) : BorderLayout(기본 레이아웃 관리자)
- Frame, JFrame : BorderLayout
- Dialog, JDialog : BorderLayout
- Panel, JPanel : FlowLayout
- Applet, JApplet : FlowLayout
BorderLayout 관리자
- 컨테이너를 5개의 영역(동, 서, 남, 북, 중앙)으로 분할하여 컴포넌트를 배치
- 분할 영역 설정 코드
- setLayout(new BorderLayout());
- add(new Button("North"), BorderLayout.NORTH);
- add(new Button("South"), BorderLayout.SOUTH);
- add(new Button("East"), BorderLayout.EAST);
- add(new Button("West"), BorderLayout.WEST);
- add(new Button("Center"), BorderLayout.CENTER);
- 컴포넌트의 수직과 수평 간격 설정
- BorderLayout(int hgap, int vgap)
- void setHgap(int hgap)
- void setVgap(int vgap)
GridLayout 관리자
- 컨테이너 공간을 격자 모양으로 나누는 관리자
- setLayout(new GridLayout(3, 2));
- add(new button("1"));
- add(new button("2"));
- add(new button("3"));
- add(new button("4"));
- add(new button("5"));
- add(new button("6"));
- 컴포넌트의 수직과 수평 간격 설정
- GridLayout(int rows, int cols)
- GridLayout(int rows, int cols, int hgap, int vgap)
- void setHgap(int hgap)
- void setRows(int rows)
- void setVgap(int vgap)
FlowLayout 관리자
- 컴포넌트를 왼쪽에서부터 오른쪽으로 순차적으로 위치시키는 관리자
- FlowLayout(int align)
- FlowLayout(int align, int hgap, int vgap)
- void setHgap(int hgap)
- void setVgap(int vgap)
CardLayout 관리자
- 컴포넌트가 겹쳐서 나열되는 레이아웃 관리자
- CardLayout(int hgap, int vgap)
- void setHgap(int hgap)
- void setVgap(int vgap)
레이아웃 관리자 없이 컴포넌트 설정하기
- 기존 레이아웃 제거 : setLayout(null);
- 컴포넌트 위치 설정과 크기 변경
- void setLocation(int x, int y);
- void setSize(int width, int height)
'Language > Java' 카테고리의 다른 글
[자바의 정석 - 기초편] Chapter 5. 배열 (0) | 2023.08.04 |
---|---|
[자바의 정석 - 기초편] Chapter 2. 변수(Variable) (0) | 2023.08.03 |
컬렉션 클래스 (0) | 2023.07.06 |
유용한 클래스들 (0) | 2023.07.05 |
내부 클래스와 익명 클래스 (0) | 2023.07.03 |