Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- import java.awt.*;
- import java.awt.event.*;
- class Paint4 extends Frame implements MouseListener,MouseMotionListener,ActionListener{
- int x,y;
- ArrayList<Figure> objList;
- CheckboxGroup cbg;
- Checkbox c1,c2,c3,c4;
- CheckboxGroup col;//追加
- Checkbox col1,col2,col3;//追加
- Button end;
- int mode=0;
- Figure obj;
- public static void main(String args[]){
- Paint4 f=new Paint4();
- f.setSize(640,480);
- f.setTitle("drawing");
- f.addWindowListener(new WindowAdapter(){
- @Override public void windowClosing(WindowEvent e){
- System.exit(0);
- }});
- f.setVisible(true);
- if(args.length==1)f.load(args[0]);
- }
- Paint4(){
- objList=new ArrayList<Figure>();//ArrayListに描画され終わった奴が保存される。
- //画面作成
- cbg=new CheckboxGroup();
- c1=new Checkbox("丸",cbg,true);//代入してる。
- c2=new Checkbox("円",cbg,false);
- c3=new Checkbox("四角",cbg,false);
- c4=new Checkbox("線",cbg,false);
- col=new CheckboxGroup();
- col1=new Checkbox("黒",col,true);
- col2=new Checkbox("赤",col,false);
- col3=new Checkbox("青",col,false);
- end=new Button("終了");
- c1.setBounds(560,30,60,30);//選択箇所の座標決め
- c2.setBounds(560,60,60,30);
- c3.setBounds(560,90,60,30);
- c4.setBounds(560,120,60,30);
- col1.setBounds(560,180,60,30);
- col2.setBounds(560,210,60,30);
- col3.setBounds(560,240,60,30);
- end.setBounds(560,400,60,30);
- setLayout(null);
- add(c1);
- add(c2);
- add(c3);
- add(c4);
- add(col1);
- add(col2);
- add(col3);
- add(end);
- //マウス処理
- addMouseListener(this);
- addMouseMotionListener(this);
- //終了ボタン処理
- end.addActionListener(this);
- }
- public void save(String fname){
- try{
- FileOutputStream fos = new FileOutputStream(fname);
- ObjectOutputStream oos = new ObjectOutputStream(fos);
- oos.writeObject(objList);
- oos.close();
- fos.close();
- }catch(IOException e){
- }
- }
- @SuppressWarnings("unchecked")
- public void load(String fname){
- try{
- FileInputStream fis=new FileInputStream(fname);
- ObjectInputStream ois=new ObjectInputStream(fis);
- objList=(ArrayList<Figure>)ois.readObject();
- ois.close();
- fis.close();
- }catch(IOException e){
- }catch(ClassNotFoundException e){
- }
- repaint();
- }
- @Override public void paint(Graphics g){
- Figure f;
- for(int i=0;i<objList.size();i++){
- f=objList.get(i);
- f.paint(g);
- }
- if(mode>=1)obj.paint(g);
- }
- @Override public void actionPerformed(ActionEvent e){//終了ボタン
- save("paint.dat");
- System.exit(0);
- }
- @Override public void mousePressed(MouseEvent e){
- Checkbox zukei,iro;
- Color color=Color.black;
- x=e.getX();
- y=e.getY();
- zukei=cbg.getSelectedCheckbox();//チェックボックスのcbgで定義された部分の値を代入
- iro=col.getSelectedCheckbox();
- obj=null;
- if(iro==col1){
- color=Color.black;
- }else if(iro==col2){
- color=Color.red;
- }else if(iro==col3){
- color=Color.blue;
- }
- if(zukei==c1){
- mode=1;
- obj=new Dot(color);
- }else if(zukei==c2){
- mode=2;
- obj=new Circle(color);
- }else if(zukei==c3){
- mode=2;
- obj=new Rect(color);
- }else if(zukei==c4){
- mode=2;
- obj=new Line(color);
- }
- if(obj!=null){
- obj.moveto(x,y);
- repaint();
- }
- }
- @Override public void mouseReleased(MouseEvent e){
- x=e.getX();
- y=e.getY();
- if(mode==1) obj.moveto(x,y);
- else if (mode==2) obj.setWH(x-obj.x,y-obj.y);
- if(mode>=1){
- objList.add(obj);
- obj=null;
- }
- mode=0;
- repaint();
- }
- @Override public void mouseClicked(MouseEvent e){}
- @Override public void mouseEntered(MouseEvent e){}
- @Override public void mouseExited(MouseEvent e){}
- @Override public void mouseDragged(MouseEvent e){
- x=e.getX();
- y=e.getY();
- if(mode==1) obj.moveto(x,y);
- else if (mode==2) obj.setWH(x-obj.x,y-obj.y);
- repaint();
- }
- @Override public void mouseMoved(MouseEvent e){}
- }
- class Coord implements Serializable{
- int x,y;
- Coord(){
- x=y=0;
- }
- public void move(int dx,int dy){
- x+=dx;
- y+=dy;
- }
- public void moveto(int x,int y){
- this.x=x;
- this.y=y;
- }
- }
- class Figure extends Coord implements Serializable{
- Color color;
- int w,h;
- Figure(){
- w=h=0;
- }
- public void paint(Graphics g){}
- public void setWH(int w,int h){
- this.w=w;
- this.h=h;
- }
- }
- class Dot extends Figure implements Serializable{
- int size;
- Dot(Color color){
- this.color = color;
- size=10;
- }
- @Override public void paint(Graphics g){
- g.setColor(this.color);
- g.drawOval(x-size/2,y-size/2,size,size);
- }
- }
- class Circle extends Figure implements Serializable{
- Circle(Color color){
- this.color = color;
- }
- @Override public void paint(Graphics g){
- g.setColor(this.color);
- int r=(int)Math.sqrt((double)(w*w+h*h));
- g.drawOval(x-r,y-r,r*2,r*2);
- }
- }
- class Rect extends Figure implements Serializable{
- Rect(Color color){
- this.color = color;
- }
- @Override public void paint(Graphics g){
- g.setColor(this.color);
- g.drawRect(x,y,w,h);
- }
- }
- class Line extends Figure implements Serializable{
- Line(Color color){
- this.color = color;
- }
- @Override public void paint(Graphics g){
- g.setColor(this.color);
- g.drawLine(x,y,x+w,y+h);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement