1. JAVA GUI
그래픽을 그리기위한 환경
GUI환경은 다이얼로그 혹은 JFrame 같은 윈도우 창이 있어야 하며,
그 윈도우 창에 그래픽이 그려진다.
자바 GUI는 JAVA에서 AWT, Swing으로 나누어 진다.
- Java.awt 패키지의 클래스를 이용
awt는 해당 운영체제의 특징을 따라 화면 구성을 하게되며 운영체제에 따라 느낌이 다르다
만들기가 쉬우며 대신 느리고 무겁다.
ex) Button Frame TextField.
- javax.swing 패키지의 클래스 이용
swing은 자바 영역에서 사용하는 look&feel 을 적용 받아 모든 운영체제에서 동일한 느낌을 제공한다
만들기가 어려우며 대신 빠르고 가볍다
ex)JButton, JFrame, JTextField.
1)Frame(프레임)
- 응용프로그램에 윈도우를 생성하기위해 사용함
- 기본적으로 타이틀, 최소버튼, 최대버튼, 종료버튼 지원함.
- 상위클래스인 Window는 타이틀, 메뉴가 지원되지 않음.
- 기본값으로 화면에 안보이는 setVisible(false)값이므로 true로 바꿔주어야 화면상에보임
- 사용하고하자는 클래스에 extends JFrame으로 사용가능, Frame을 상속받아서 사용가능
- 화면 생성은 프로그램 초기에 이루어지므로 주로 생성자에서 작업이 이루어짐.
● 주요 메소드
static Frame[] getFrames() |
애플리케이션에서 생선한 모든 프레임을 리턴 |
MenuBar getMenuBar() |
프레임의 메뉴바를 리턴 |
int getState() |
프레임의 상태를 리턴 |
String getTitle() |
타이틀 바의 문자열을 리턴 |
void remove(MenuComponent m) |
프레임에서 지정한 메뉴를 제거 |
void setMenuBar(MenuBar mb) |
프레임의 메뉴바를 지정 |
void setResizable(Boolean resizable) |
프레임의 크기를 사용자가 변경할 수 있게 지정 |
void setSize(int width, int height) |
이 컴퍼넌트의 사이즈를 width 및 height로 변경 |
void setVisible(boolean b) |
파라미터 b값에 응해, 이 컴퍼넌트를 표시하는지 비표시로하는지 합니다. |
void setLocation(int x, int y) |
이 컴퍼넌트를 새로운 위치로 이동 |
void setLocationRelativeTo(Component c) |
윈도우를 매개변수 안에 컴포넌트에 따라 상대적인 위치를 지정할 수 있다 |
void setBounds(intx, inty, int width, int height) |
위치와 크기를 설정 |
void setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) |
JFrame으로 창을띄운뒤 윈도우창을 닫으면 프로세스까지 닫아짐 |
2. Graphics 클래스
Graphics 클래스는 그림을 그릴 수 있는 도화지이며 그림을 그리는 도구인 기초 도형을 그리는 메소드를 제공한다.
기초 도형 종류
직선, 사각형, 둥근사각형, 타원 ,호 ,다각형 ,문자열
기초도형 메소드
▶직선
drawLine(), drawPolyline()
▶사각형
drawRect(), fillRect(), clearRect()
▶3차원 사각형
draw3DRect(), fill3DRect()
▶둥근 사각형
drawRoundRect(), fillRoundRect()
▶타원
drawOval(), fillOval()
▶호
drawArc(), fillArc()
▶다각형
drawPolygon(), fillPolygon()
▶문자열
drawString()
▶이미지
drawImage()
- draw는 도형의 테두리만 그리는 용도이며, fill은 도형의 채우기 효과이다.
repaint() 메소드
강제로 컴포넌트의 다시 그리기 지시하는 메소드
component.repaint();
-자바 플랫폼에게 지금 컴포넌트를 다시 그리도록지시
repaint()가 필요한 경우
프로그램 내에서 컴포넌트 모양과 위치를 변경한 경우
-repaint()를 호출하면 자바 플랫폼에 의해 컴포넌트의 paintComponet()가 호출됨
컴포넌트
자바에서 제공하는 컴포넌트는 기본 컴포넌트와 컨테이너 컴포넌트로 나뉘어집니다.
기본 컴포넌트는 레이블, 버튼,체크박스 등의 내용물이라고 생각하시면 편하며,
컨테이너 컴포넌트는 말 그대로 담을 수 있는 컴포넌트입니다.
package dark_world;
public class Main {
public static final int SCREEN_WIDTH = 1200;
public static final int SCREEN_HIGHT = 720;
public static void main(String[] args) {
new DarkWorld();
}
}
package dark_world;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class DarkWorld extends JFrame{
private Image screenImage;
private Graphics screenGraphic;
private Image introBackground;
public DarkWorld() {
setTitle("Dark World");
setSize(Main.SCREEN_WIDTH, Main.SCREEN_HIGHT);//게임창의 크기를 정해줌
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
introBackground = new ImageIcon(Main.class.getResource("../images/backgroundImage(Title).jpg")).getImage();
}
public void paint(Graphics g) {//컴포넌트 자신과 모든 자손그리기
screenImage = createImage(Main.SCREEN_WIDTH, Main.SCREEN_HIGHT);
screenGraphic = screenImage.getGraphics();
screenDraw(screenGraphic);
g.drawImage(screenImage, 0, 0, null);
}
public void screenDraw(Graphics g) {
g.drawImage(introBackground, 0 ,0,null);
this.repaint();
}
}
'JAVA > [JAVA] 바구니' 카테고리의 다른 글
[JAVA] SOLID 객체지향설계 (0) | 2020.03.25 |
---|---|
[JAVA] Java Thread (0) | 2020.03.12 |
[JAVA] 기본 타입과 참조타입 (0) | 2020.03.10 |
클래스로부터 객체 생성 (0) | 2020.03.09 |
객체 지향 프로그래밍이란? (0) | 2020.03.09 |
댓글