본문 바로가기
Java/자바 Swing

[Java] 60. Swing: 이미지 출력하기

글: Song hyun 2024. 4. 29.
728x90
반응형

[Java] 60. Swing: 이미지 출력하기

 

 아래와 같이 Java Swing에서 이미지를 출력해보자.

 

 

 

(1) MyImageFrame()
생성자에 작성한 메서드들을 집어넣는다. 객체 생성 시, 해당 사용자 정의 생성자에서 선언된 메서드들이 실행된다.

(2) initData()
setTitle: 창에 제목(타이틀)을 삽입한다.
setSize: 창의 크기를 설정한다.
setDefaultCloseOperation: 자바에서 사용자가 x버튼을 눌렀을 때의 처리를 결정하는 메서드이다.
EXIT_ON_CLOSE= 어플리케이션의 종료를 의미한다.

myImagePanel: 내부 클래스로 정의한 데이터 타입이다. (=컴포지션, 포함관계.)

(3) 내부 클래스 MyImagePanel 
*JPanel의 기능을 사용하기 위해, JPanel을 상속받는다.

MyImagePanel 사용자 생성자: 해당 객체 생성시, "image1.png"를 삽입한다.

(4) paint(오버라이드 메서드)
-부모 클래스/상위 클래스인 JPanel의 paint를 재정의한다.
-해당 좌표의 위치에 "image1.png"를 그린다.

 

package ch03;

public class MyImageFrameMainTest {
	public static void main(String[] args) {
		MyImageFrame m=new MyImageFrame();
	}

}
package ch03;

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 중첩 클래스 --> 외부, 내부 클래스
 * 내부 클래스 --> 인스턴스 클래스, static 클래스
 * 
 */
public class MyImageFrame extends JFrame {
	
	// 내부 클래스로 정의한 데이터 타입이다.
	private MyImagePanel myImagePanel;
	
	public MyImageFrame() {
		initData();
		setInitLayout();
	}
	private void initData() {
		setTitle("이미지 활용 연습");
		setSize(600,600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		myImagePanel=new MyImagePanel();
	}
	private void setInitLayout() {
		add(myImagePanel);
		setVisible(true);
	}
	
	// 내부 클래스 --> static 키워드 활용
	// 정적(static) 내부 클래스
	static class MyImagePanel extends JPanel{
		private Image image;
		
		public MyImagePanel() {
			// ImageIcon 데이터 타입 안에, getImage() 메서드를 호출하면,
			// Image라는 데이터 타입을 만들어 낼 수 있다.
			image= new ImageIcon("image1.png").getImage();
		}
		
		// paints --> x
		// paint --> o
		@Override
		public void paint(Graphics g) {
			super.paint(g);
			g.drawImage(image, 100, 100, 100, 100, null);
		}
	}
	
}
728x90
반응형