您的位置:首页 > 编程语言 > Java开发

java实现画图,可更换图形的各种形状,颜色,可擦除

2017-06-11 11:35 363 查看
java实现画图,可更换图形的各种形状,颜色,可擦除



Shape.java  封装图形的左右坐标,标志量,颜色

package huatu;

import java.awt.Color;

public class shape   {

int leftx,lefty,rightx,righty,flag;

Color color;

shape(int leftx,int lefty,int rightx,int righty,int flag,Color
color){

this.leftx=leftx;

this.lefty=lefty;

this.rightx=rightx;

this.righty=righty;

this.flag=flag;

this.color=color;

}

void setColor(Color
color){

this.color=color;

}

Col
4000
or getColor(){

return color;

}

int getLeftx(){

return leftx;

}

void  setLeftx(int leftx){

this.leftx=leftx;

}

int getLefty(){

return lefty;

}

void  setLefty(int lefty){

this.lefty=lefty;

}

int getRightx(){

return rightx;

}

void  setRightx(int rightx){

this.rightx=rightx;

}

int getRighty(){

return righty;

}

void  setRighty(int righty){

this.righty=righty;

}

int getFlag(){

return flag;

}

void setFlag(int flag){

this.flag=flag;

}

}

My.java   面板继承画布Canvas,根据标志量的不同可画不同的图形,可修改颜色

package huatu;

import java.awt.*;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.*;

import java.awt.image.BufferedImage;

import java.util.*;

public class my extends Canvas implements  MouseListener,MouseMotionListener{

ArrayList<shape> list=new ArrayList<shape>();

 int leftx,lefty,rightx,righty;

 Color color=Color.black;

 int f=0;

 int ff=0;

my(){

        addMouseListener(this);

addMouseMotionListener(this);

}

public void paint(Graphics g){

int newX = Math.min(leftx,rightx);

int newY = Math.min(lefty,righty);

int newWidth = Math.abs(leftx-rightx);

int newHeight = Math.abs(lefty-righty);

if(ff==1){

Iterator<shape> iterator=list.iterator();

while(iterator.hasNext()){

shape p=(shape)iterator.next();

int newX1 = Math.min(p.leftx,p.rightx);

int newY1 = Math.min(p.lefty,p.righty);

int newWidth1 = Math.abs(p.leftx-p.rightx);

int newHeight1 = Math.abs(p.lefty-p.righty);

if((p.color).equals(Color.red)){

g.setColor(color.red);

}

if((p.color).equals(Color.green)){

g.setColor(color.green);

}

if((p.color).equals(Color.blue)){

g.setColor(color.blue);

}

if((p.color).equals(Color.yellow)){

g.setColor(color.yellow);

}

if((p.color).equals(Color.black)){

g.setColor(color.black);

}

if(p.flag==0){

g.drawLine(p.leftx, p.lefty, p.rightx, p.righty);

}

if(p.flag==1){

g.drawRect(newX1, newY1, newWidth1, newHeight1);

}

if(p.flag==2){

g.drawOval(newX1, newY1, newWidth1, newHeight1);

}

    if(p.flag==3){

g.fillRect(newX1, newY1, newWidth1, newHeight1);

    }

if(p.flag==4){

g.fillOval(newX1, newY1, newWidth1, newHeight1);

}

if(p.flag==5){

g.clearRect(newX1, newY1, newWidth1, newHeight1);

}

}

}

if((color).equals(Color.red)){

g.setColor(color.red);

}

if((color).equals(Color.green)){

g.setColor(color.green);

}

if((color).equals(Color.blue)){

g.setColor(color.blue);

}

if((color).equals(Color.yellow)){

g.setColor(color.yellow);

}

if((color).equals(Color.black)){

g.setColor(color.black);

}

if(f==0){

g.drawLine(leftx, lefty,rightx,righty);

}

if(f==1){

g.drawRect(newX, newY, newWidth, newHeight);

}

if(f==2){

g.drawOval(newX, newY, newWidth, newHeight);

}

if(f==3){

g.fillRect(newX, newY, newWidth, newHeight);

}

if(f==4){

g.fillOval(newX, newY, newWidth, newHeight);

}

if(f==5){

g.clearRect(newX, newY, newWidth, newHeight);

}

}

public void mousePressed(MouseEvent e){

leftx=e.getX();

lefty=e.getY();

// repaint();

ff=1;

}

public void mouseReleased(MouseEvent e) {//写

list.add(new shape(leftx,lefty,rightx,righty,f,color));

ff=0;

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {}

public void mouseDragged(MouseEvent e){

rightx=e.getX();

righty=e.getY();

repaint();

}  //负责处理拖动鼠标触发的鼠标事件。

public void mouseMoved(MouseEvent e)  {}

}

界面

Win.java  根据菜单项中的选项,更改图形形状,颜色,擦出

package huatu;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.*;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import javax.swing.*;

import javax.swing.filechooser.FileFilter;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.*;

import java.awt.image.BufferedImage;

import java.io.File;

import javax.imageio.ImageIO;

import javax.swing.*;

import javax.swing.filechooser.FileFilter;

import java.util.Calendar.*;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.awt.*;

import javax.swing.*;

import javax.swing.event.DocumentEvent;

import javax.swing.event.DocumentListener;

import java.awt.event.*;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class  win extends JFrame  implements ActionListener

{

JMenuBar jmb = new JMenuBar();

    JMenu jm = new JMenu("文件(F)");

    JMenuItem jmi1 = new JMenuItem("打开");

    JMenuItem jmi2 = new JMenuItem("保存");

    JMenu menu1=new JMenu("形状(S)");

    JMenuItem item11=new JMenuItem("直线");

    JMenuItem item12=new JMenuItem("矩形");

    JMenuItem item13=new JMenuItem("圆形");

    JMenu menu2=new JMenu("颜色(C)");

    JMenuItem item21=new JMenuItem("红色");

    JMenuItem item22=new JMenuItem("绿色");

    JMenuItem item23=new JMenuItem("蓝色");

    JMenuItem item24=new JMenuItem("黄色");

    JMenuItem item25=new JMenuItem("黑色");

    JMenu menu3=new JMenu("实心形状(M)");

    JMenuItem item31=new JMenuItem("实心矩形");

    JMenuItem item32=new JMenuItem("实心圆");

    JMenu menu4=new JMenu("工具(T)");

    JMenuItem item41=new JMenuItem("橡皮檫");

JButton button1=new JButton("长方形");

JButton button2=new JButton("椭圆");

    my pane=new my();

//    JFileChooser fileDialog=new JFileChooser();

    JFileChooser fileDialog=new JFileChooser();

BufferedReader in;

FileReader fileReader;

BufferedWriter out;

FileWriter fileWriter;

File dir;

    String name;

    win()

   {    

     init();

     setTitle("画图");

     setBounds(100,100,500,300);

     setVisible(true);

     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }

    void init(){

     add(pane,BorderLayout.CENTER);

     jm.add(jmi1);

jm.add(jmi2);

jmb.add(jm);

menu1.add(item11);

menu1.add(item12);

menu1.add(item13);

menu2.add(item21);

menu2.add(item22);

menu2.add(item23);

menu2.add(item24);

menu2.add(item25);

menu3.add(item31);

menu3.add(item32);

menu4.add(item41);

jmb.add(menu1);

jmb.add(menu2);

jmb.add(menu3);

jmb.add(menu4);

setJMenuBar(jmb);

jmi1.addActionListener(this);

jmi2.addActionListener(this);

item11.addActionListener(this);

item12.addActionListener(this);

item13.addActionListener(this);

item21.addActionListener(this);

item22.addActionListener(this);

item23.addActionListener(this);

item24.addActionListener(this);

item25.addActionListener(this);

item31.addActionListener(this);

item32.addActionListener(this);

item41.addActionListener(this);

    }

    public void actionPerformed(ActionEvent e){

       if (e.getSource()== item11){

       pane.f=0;

   }

   if (e.getSource()== item12){

   pane.f=1;

   }

   if (e.getSource()== item13){

   pane.f=2;

   }

   if (e.getSource()== item31){

   pane.f=3;

   }

   if (e.getSource()== item32){

   pane.f=4;

   }

   if (e.getSource()== item21){

   pane.color=Color.red;

   }

   if (e.getSource()== item22){

   pane.color = Color.green;

   }

   if (e.getSource()== item23){

   pane.color = Color.blue;

   }

   if (e.getSource()== item24){

   pane.color = Color.yellow;

   }

   if (e.getSource()== item25){

   pane.color = Color.black;

   }

   if (e.getSource()== item41){

//   pane.color = Color.black;

   pane.f=5;

   }

   if(e.getSource()==jmi1){}

   if(e.getSource()==jmi2){}

    }

}

主函数:

package huatu;

 

public class test3 {

public static void main(String
args[]){

new win();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: