본문 바로가기
JAVA/[JAVA] 바구니

JAVA GUI

by oncerun 2020. 3. 11.
반응형

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 클래스는 그림을 그릴 수 있는 도화지이며 그림을 그리는 도구인 기초 도형을 그리는 메소드를 제공한다.

 

기초 도형 종류

 

직선, 사각형, 둥근사각형, 타원 ,호 ,다각형 ,문자열

 

출처 https://aiden1004.tistory.com/

 

기초도형 메소드

 

직선

  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

댓글