그림판

|

import javax.swing.*;

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

public class PictureBoard extends JFrame implements MouseListener,ActionListener
{
   private JButton buttonCanvas;
   private JButton buttonLine;
   private JButton buttonRect;
   private JButton buttonOval;
   private JPanel canvas;
  
   private JPanel component;
  
   private Point p1,p2;     //좌료얻기위한 변수
   private Graphics g;      //그리기수행하는 변수

   private int DRAW_MODE=0;//1 : 선 2 : 사각형 3 : 원
   public PictureBoard()      //기본생성자
   {
    this.getContentPane().setLayout(new BorderLayout());
    buttonCanvas = new JButton();   
    buttonLine = new JButton("Line");     //버튼생성
    buttonOval = new JButton("Rect");
    buttonRect = new JButton("Squre");
   
    component = new JPanel(new FlowLayout());
    component.add(buttonCanvas);
    component.add(buttonLine);
    component.add(buttonOval);
    component.add(buttonRect);
      
    canvas=new JPanel();
    canvas.setBackground(Color.white);
    canvas.addMouseListener(this);
 
    this.getContentPane().add(component,BorderLayout.NORTH);
    this.getContentPane().add(canvas,BorderLayout.CENTER);
   
    buttonCanvas.addActionListener(this);   
    buttonLine.addActionListener(this);
    buttonOval.addActionListener(this);
    buttonRect.addActionListener(this);
   }
  
   public void drawLine()     //선그리기
   {   
    g = canvas.getGraphics();      
       g.drawLine((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
   }
    public void drawRect()      //사각형그리기
    {
        g = canvas.getGraphics();       
        g.draw3DRect((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY(),true);
    }
    public void drawOval()       //원그리기
    {
     g = canvas.getGraphics();
        g.drawOval((int)p1.getX(),(int)p1.getY(),(int)p2.getX(),(int)p2.getY());
    }  
  
   public void mouseClicked(MouseEvent e){}   
   public void mouseEntered(MouseEvent e){}   
   public void mouseExited(MouseEvent e){}    
  
   public void mousePressed(MouseEvent e)
   {
       p1=e.getPoint();
   }
  
   public void mouseReleased(MouseEvent e)
   {
       p2=e.getPoint();

       switch(DRAW_MODE){          
           case 1: drawLine(); break;
           case 2: drawRect(); break;
           case 3: drawOval(); break;
       }
   }
  
   public void actionPerformed(ActionEvent e)     //ActionListener 구현
   {
        if(e.getActionCommand().equals("Line")){//액션 이벤트가 발생한 버튼의 텍스트
            DRAW_MODE = 1;                                       
        }else if(e.getActionCommand().equals("Squre")){
            DRAW_MODE = 2;           
        }else if(e.getActionCommand().equals("Rect")){
            DRAW_MODE = 3;           
        }
   }
  
   public static void main(String[] args)      //메인메소드
   {
      PictureBoard f = new PictureBoard();
      f.setTitle("그림판");
      f.setSize(500, 400);
      f.setVisible(true);
   }
}


 

'JAVA/JSP > Source' 카테고리의 다른 글

JOptionPane  (0) 2008.07.15
ActionListenerTest  (0) 2008.07.15
substance look&feel colorchart  (0) 2008.07.14
substance look&feel 사용예  (0) 2008.07.14
Garbage Collection 사용예  (0) 2008.07.14
And