Advertisement
maron

色完了.java

Jan 16th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.26 KB | None | 0 0
  1. import java.util.*;
  2. import java.io.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5.  
  6. class Paint4 extends Frame implements MouseListener,MouseMotionListener,ActionListener{
  7.     int x,y;
  8.     ArrayList<Figure> objList;
  9.     CheckboxGroup cbg;
  10.     Checkbox c1,c2,c3,c4;
  11.     CheckboxGroup col;//追加
  12.     Checkbox col1,col2,col3;//追加
  13.     Button end;
  14.     int mode=0;
  15.     Figure obj;
  16.     public static void main(String args[]){
  17.         Paint4 f=new Paint4();
  18.         f.setSize(640,480);
  19.         f.setTitle("drawing");
  20.         f.addWindowListener(new WindowAdapter(){
  21.             @Override public void windowClosing(WindowEvent e){
  22.                 System.exit(0);
  23.             }});
  24.         f.setVisible(true);
  25.        
  26.         if(args.length==1)f.load(args[0]);
  27.     }
  28.    
  29.     Paint4(){
  30.         objList=new ArrayList<Figure>();//ArrayListに描画され終わった奴が保存される。
  31.         //画面作成
  32.         cbg=new CheckboxGroup();
  33.         c1=new Checkbox("丸",cbg,true);//代入してる。
  34.         c2=new Checkbox("円",cbg,false);
  35.         c3=new Checkbox("四角",cbg,false);
  36.         c4=new Checkbox("線",cbg,false);
  37.        
  38.         col=new CheckboxGroup();
  39.         col1=new Checkbox("黒",col,true);
  40.         col2=new Checkbox("赤",col,false);
  41.         col3=new Checkbox("青",col,false);
  42.          
  43.         end=new Button("終了");
  44.        
  45.         c1.setBounds(560,30,60,30);//選択箇所の座標決め
  46.         c2.setBounds(560,60,60,30);
  47.         c3.setBounds(560,90,60,30);
  48.         c4.setBounds(560,120,60,30);
  49.        
  50.         col1.setBounds(560,180,60,30);
  51.         col2.setBounds(560,210,60,30);
  52.         col3.setBounds(560,240,60,30);
  53.        
  54.         end.setBounds(560,400,60,30);
  55.         setLayout(null);
  56.        
  57.         add(c1);
  58.         add(c2);
  59.         add(c3);
  60.         add(c4);
  61.        
  62.         add(col1);
  63.         add(col2);
  64.         add(col3);
  65.        
  66.         add(end);
  67.         //マウス処理
  68.         addMouseListener(this);
  69.         addMouseMotionListener(this);
  70.         //終了ボタン処理
  71.         end.addActionListener(this);
  72.     }
  73.     public void save(String fname){
  74.         try{
  75.             FileOutputStream fos = new FileOutputStream(fname);
  76.             ObjectOutputStream oos = new ObjectOutputStream(fos);
  77.             oos.writeObject(objList);
  78.             oos.close();
  79.             fos.close();
  80.         }catch(IOException e){
  81.         }
  82.     }
  83.     @SuppressWarnings("unchecked")
  84.     public void load(String fname){
  85.         try{
  86.             FileInputStream fis=new FileInputStream(fname);
  87.             ObjectInputStream ois=new ObjectInputStream(fis);
  88.             objList=(ArrayList<Figure>)ois.readObject();
  89.             ois.close();
  90.             fis.close();
  91.         }catch(IOException e){
  92.         }catch(ClassNotFoundException e){
  93.         }
  94.         repaint();
  95.     }
  96.  
  97.     @Override public void paint(Graphics g){
  98.         Figure f;
  99.         for(int i=0;i<objList.size();i++){
  100.             f=objList.get(i);
  101.             f.paint(g);
  102.         }
  103.         if(mode>=1)obj.paint(g);
  104.     }
  105.     @Override public void actionPerformed(ActionEvent e){//終了ボタン
  106.         save("paint.dat");
  107.         System.exit(0);
  108.     }
  109.     @Override public void mousePressed(MouseEvent e){
  110.         Checkbox zukei,iro;
  111.         Color color=Color.black;
  112.        
  113.         x=e.getX();
  114.         y=e.getY();
  115.        
  116.         zukei=cbg.getSelectedCheckbox();//チェックボックスのcbgで定義された部分の値を代入
  117.         iro=col.getSelectedCheckbox();
  118.         obj=null;
  119.        
  120.         if(iro==col1){
  121.             color=Color.black;
  122.         }else if(iro==col2){
  123.             color=Color.red;
  124.         }else if(iro==col3){
  125.             color=Color.blue;
  126.         }
  127.        
  128.         if(zukei==c1){
  129.             mode=1;
  130.             obj=new Dot(color);
  131.         }else if(zukei==c2){
  132.             mode=2;
  133.             obj=new Circle(color);
  134.         }else if(zukei==c3){
  135.             mode=2;
  136.             obj=new Rect(color);
  137.         }else if(zukei==c4){
  138.             mode=2;
  139.             obj=new Line(color);
  140.         }
  141.        
  142.         if(obj!=null){
  143.             obj.moveto(x,y);
  144.             repaint();
  145.         }
  146.        
  147.     }
  148.     @Override public void mouseReleased(MouseEvent e){
  149.         x=e.getX();
  150.         y=e.getY();
  151.         if(mode==1) obj.moveto(x,y);
  152.         else if (mode==2) obj.setWH(x-obj.x,y-obj.y);
  153.         if(mode>=1){
  154.             objList.add(obj);
  155.             obj=null;
  156.         }
  157.         mode=0;
  158.         repaint();
  159.     }
  160.     @Override public void mouseClicked(MouseEvent e){}
  161.     @Override public void mouseEntered(MouseEvent e){}
  162.     @Override public void mouseExited(MouseEvent e){}
  163.     @Override public void mouseDragged(MouseEvent e){
  164.         x=e.getX();
  165.         y=e.getY();
  166.         if(mode==1) obj.moveto(x,y);
  167.         else if (mode==2) obj.setWH(x-obj.x,y-obj.y);
  168.         repaint();
  169.     }
  170.     @Override public void mouseMoved(MouseEvent e){}
  171. }
  172.  
  173. class Coord implements Serializable{
  174.     int x,y;
  175.     Coord(){
  176.         x=y=0;
  177.     }
  178.     public void move(int dx,int dy){
  179.         x+=dx;
  180.         y+=dy;
  181.     }
  182.     public void moveto(int x,int y){
  183.         this.x=x;
  184.         this.y=y;
  185.     }
  186. }
  187.  
  188. class Figure extends Coord implements Serializable{
  189.     Color color;
  190.     int w,h;
  191.     Figure(){
  192.         w=h=0;
  193.     }
  194.     public void paint(Graphics g){}
  195.     public void setWH(int w,int h){
  196.         this.w=w;
  197.         this.h=h;
  198.     }
  199. }
  200.  
  201. class Dot extends Figure implements Serializable{
  202.     int size;
  203.     Dot(Color color){
  204.         this.color = color;
  205.         size=10;
  206.     }
  207.     @Override public void paint(Graphics g){
  208.         g.setColor(this.color);
  209.         g.drawOval(x-size/2,y-size/2,size,size);
  210.     }
  211. }
  212.  
  213. class Circle extends Figure implements Serializable{
  214.     Circle(Color color){
  215.         this.color = color;
  216.     }
  217.     @Override public void paint(Graphics g){
  218.         g.setColor(this.color);
  219.         int r=(int)Math.sqrt((double)(w*w+h*h));
  220.         g.drawOval(x-r,y-r,r*2,r*2);
  221.     }
  222. }
  223.  
  224. class Rect extends Figure implements Serializable{
  225.     Rect(Color color){
  226.         this.color = color;
  227.     }
  228.     @Override public void paint(Graphics g){
  229.         g.setColor(this.color);
  230.         g.drawRect(x,y,w,h);
  231.     }
  232. }
  233.  
  234. class Line extends Figure implements Serializable{
  235.     Line(Color color){
  236.         this.color = color;
  237.     }
  238.     @Override public void paint(Graphics g){
  239.         g.setColor(this.color);
  240.         g.drawLine(x,y,x+w,y+h);
  241.     }
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement