JAVA

13일차

구자룡 2021. 4. 9. 09:05

//화면의 Graphics진행냐용에 관한 예제프로그램.

import java.awt.*;
public class Exam01 extends Frame{
	private Button bt = new Button("확인");
	private BorderLayout bl = new BorderLayout();
	//이렇게해서 컴포넌트와 그래프를 동시에 같이 쓰고자 한다면..
	
	public Exam01(String title) {
		super(title);//super은 상위 생성자를 호출한다는 뜻이다.
		super.setSize(500,300);
		
		this.init();
		this.start();
		
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frm = super.getSize();
		int xpos = (int)(screen.getWidth()/2-frm.getWidth()/2);
		int ypos = (int)(screen.getHeight()/2-frm.getHeight()/2);
		super.setLocation(xpos,ypos);
		
		super.setResizable(true);
		super.setVisible(true);		
	}
	public void init() {
		this.setLayout(bl);
		this.add("North",bt);
	}
	public void start() {}
	public void update(Graphics g) {
		g.clearRect(0, 0, 300, 200);//전체화면을 초기화합니다.
		paint(g);
	}
	public void paint(Graphics g) {
		System.out.println("호출");
		g.drawLine(50, 50, 100, 100);//50,50포인트에서 100,100의 포인트로 직선을 그림.
	}
	
	public static void main(String[] ar) {
		new Exam01("제목");
		
	}

}

//버튼을 누를때마다 선이 임의로 그려질 수 있도록 하는 프로그램.

import java.awt.*;
import java.awt.event.*;

public class Exam02 extends Frame implements ActionListener{
	private Button bt = new Button("확인");
	private BorderLayout bl = new BorderLayout();
	
	public Exam02(String title) {
		super(title);//super은 상위 생성자를 호출한다는 뜻이다.
		super.setSize(500,300);
		
		this.init();
		this.start();
		
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frm = super.getSize();
		int xpos = (int)(screen.getWidth()/2-frm.getWidth()/2);
		int ypos = (int)(screen.getHeight()/2-frm.getHeight()/2);
		super.setLocation(xpos,ypos);
		
		super.setResizable(false);
		super.setVisible(true);		
	}
	public void init() {
		this.setLayout(bl);
		this.add("South",bt);
	}
	public void start() {
		bt.addActionListener(this);
	}
	
	/*
	public void update(Graphics g) {
		g.clearRect(0, 0, 300, 200);
		paint(g);
	}*/
	public void paint(Graphics g) {
		System.out.println("호출");
		int x = (int)(Math.random()*200);
		int y = (int)(Math.random()*300);
		g.drawLine(x, x, y, y);
		
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == bt) {
			this.repaint();
		}
	}
	
	public static void main(String[] ar) {
		new Exam02("제목");
		
	}

}

//Graphics 클래스에서 구성된 메소드내용 살피기.
//이미지를 그려놓고 버튼을 선택하여 확대/축소하는 예제프로그램.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Exam03 extends Frame implements ActionListener{
	private Button bt1 = new Button("확대");
	private Button bt2 = new Button("축소");
	
	private Panel p = new Panel();
	private BorderLayout bl = new BorderLayout();
	private FlowLayout fl = new FlowLayout(FlowLayout.RIGHT);
	
	private Image img;//그래픽관련 이미지객체임.
	private int size = 100;
	
	public Exam03(String title) {
		super(title);//super은 상위 생성자를 호출한다는 뜻이다.
		super.setSize(500,300);
		
		this.init();//화면초기화
		this.start();//이벤트처리에 따른 등록
		
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frm = super.getSize();
		int xpos = (int)(screen.getWidth()/2-frm.getWidth()/2);
		int ypos = (int)(screen.getHeight()/2-frm.getHeight()/2);
		super.setLocation(xpos,ypos);
		
		super.setResizable(false);
		super.setVisible(true);		
	}
	public void init() {
		img = Toolkit.getDefaultToolkit().getImage("apple.jpg");
		this.setLayout(bl);
		p.setLayout(fl);
		p.add(bt1); p.add(bt2);
		this.add("North",p);
	}
	public void start() {
		bt1.addActionListener(this);
		bt2.addActionListener(this);
	}
	/*
	public void update(Graphics g) {}
	*/
	public void paint(Graphics g) {
		g.drawLine(50, 50, 100, 100);
		g.setColor(Color.RED);
		g.drawRect(50,50,100,100);
		
		//속이 채워지는것을 나타내봅시다.
		g.setColor(Color.BLUE);
		g.fillRect(160, 50, 100, 100);
		
		//polygon을 사용하는 경우의 그래픽.
		g.setColor(Color.GREEN);
		int[] x = {80,100,50};
		int[] y = {30,90,85};
		g.drawPolygon(x,y,3);
		
		//폰트와 색상을 바꿔가면서 글씨를 써봅시다.
		g.setColor(Color.CYAN);
		g.setFont(new Font("굴림체",Font.BOLD,20));
		g.drawString("반갑습니다..여기는 그래픽임",100,100);
		
		//이미지파일을 나타내는 방법..
		Toolkit tk = Toolkit.getDefaultToolkit();
		Image img = tk.getImage("images/apple.jpg");
		g.drawImage(img, 50, 50, size, size, this);
	}
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == bt1) {
			size = 150;
		}
		else if(e.getSource() == bt2) {
			size = 100;
		}
		repaint();
	}
		
	public static void main(String[] ar) {
		new Exam03("제목");
		
	}

}

import javax.swing.*;
import java.awt.*;


public class Exam643 extends JFrame{
	private MyPanel panel = new MyPanel();
	
	public Exam643() {
		setTitle("JPanel의 paintComponent() 예졔");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setContentPane(panel);
		setSize(250,220);
		setVisible(true);
	}
	
	class MyPanel extends JPanel {
		public void paintComponent(Graphics g) {
			super.paintComponents(g);
			g.setColor(Color.blue);
			g.drawRect(10, 10, 50, 50);
			g.drawRect(50, 50, 50, 50);
			g.setColor(Color.MAGENTA);
			g.drawRect(90, 90, 50, 50);
		}
	}
	
	public static void main(String[] ar) {
		new Exam643();
	}

}

import javax.swing.*;
import java.awt.*;

public class Exam660 extends JFrame {
	private MyPanel panel = new MyPanel();
	
 	public Exam660() {
		setTitle("패널의 크기에 맞추어 이미지 그리기");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setContentPane(panel);
		
		setSize(200, 300);
		setVisible(true);
	}

 	class MyPanel extends JPanel {
		private ImageIcon icon = new ImageIcon("images/image0.jpg"); // 이미지 로딩
		private Image img = icon.getImage(); // 이미지 객체
		
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			
			// 이미지를 패널 크기로 조절하여 그린다
			g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
		}	
	}

	public static void main(String [] args) {
		new Exam660();
	}
} 

'JAVA' 카테고리의 다른 글

15일차  (0) 2021.04.13
14일차  (0) 2021.04.12
12일차  (0) 2021.04.08
11일차  (0) 2021.04.08
10일차  (0) 2021.04.07