//화면의 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();
}
}