| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:这个程序我想加个计算器进去不会加求大神帮助
只看楼主 加入收藏
jkbj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:26
专家分:51
注 册:2013-5-24
结帖率:100%
收藏
 问题点数:0 回复次数:0 
这个程序我想加个计算器进去不会加求大神帮助
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
//----------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//-------------
import javax.swing.*;




import java.awt.geom.*;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import *;

class Point implements Serializable
{
    int x,y;
    Color col;
    int tool;
    int boarder;



   
    Point(int x, int y, Color col, int tool, int boarder)
    {
        this.x = x;
        this.y = y;
        this.col = col;
        this.tool = tool;
        this.boarder = boarder;
    }
}

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener
{
    int x = -1, y = -1;
    int con = 1;//画笔大小
    int Econ = 5;//橡皮大小
   
    int toolFlag = 0;//toolFlag:工具标记
    //toolFlag工具对应表:
    //(0--画笔);(1--橡皮);(2--清除);
    //(3--直线);(4--圆);(5--矩形);
   
    Color c = new Color(0,0,0); //画笔颜色
    BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细
    Point cutflag = new Point(-1, -1, c, 6, con);//截断标志
   
    Vector paintInfo = null;//点信息向量组
    int n = 1;
   
    FileInputStream picIn = null;
    FileOutputStream picOut = null;

    ObjectInputStream VIn = null;
    ObjectOutputStream VOut = null;

    //个人添加
    MenuBar bar;
    Menu B,C,D;
    // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/
    Panel toolPanel;
    MenuItem pen,drLine,drCircle,drRect;
    Button clear ,eraser;
    Choice ColChoice,SizeChoice,EraserChoice;
    Button colchooser;
    Label 颜色,大小B,大小E;
    //保存功能
    MenuItem newPic,openPic,savePic,exitPic;
    FileDialog newPicture,openPicture,savePicture;
    MenuItem Calculator,Clock;
    paintboard(String s)
    {
        super(s);
        addMouseMotionListener(this);
        addMouseListener(this);
        
        paintInfo = new Vector();
        
        /*各工具按钮及选择项*/
        //颜色选择
        ColChoice = new Choice();
        ColChoice.add("black");
        ColChoice.add("red");
        ColChoice.add("blue");
        ColChoice.add("green");
        ColChoice.addItemListener(this);
        //画笔大小选择
        SizeChoice = new Choice();
        SizeChoice.add("1");
        SizeChoice.add("3");
        SizeChoice.add("5");
        SizeChoice.add("7");
        SizeChoice.add("9");
        SizeChoice.addItemListener(this);
        //橡皮大小选择
        EraserChoice = new Choice();
        EraserChoice.add("5");
        EraserChoice.add("9");
        EraserChoice.add("13");
        EraserChoice.add("17");
        EraserChoice.addItemListener(this);
        ////////////////////////////////////////////////////
        toolPanel = new Panel();
        
        clear = new Button("清除");
        eraser = new Button("橡皮");
        pen = new MenuItem("画笔");
        drLine = new MenuItem("画直线");
        drCircle = new MenuItem("画圆形");
        drRect = new MenuItem("画矩形");
        //个人操作
        bar=new MenuBar();
        B=new Menu("文件");
        C=new Menu("工具");
        D=new Menu("操作");
        
        newPic=new MenuItem("新建画图");
        openPic = new MenuItem("打开图画");
        savePic = new MenuItem("保存图画");
        exitPic = new MenuItem("退出画图");
        Calculator =new MenuItem("计算器");
        Clock=new MenuItem("时钟");
        
        colchooser = new Button("显示调色板");
        
        //各组件事件监听
        clear.addActionListener(this);
        eraser.addActionListener(this);
        pen.addActionListener(this);
        drLine.addActionListener(this);
        drCircle.addActionListener(this);
        drRect.addActionListener(this);
        openPic.addActionListener(this);
        savePic.addActionListener(this);
        colchooser.addActionListener(this);
        newPic.addActionListener(this);
        exitPic.addActionListener(this);
        Calculator.addActionListener(this);
        Clock.addActionListener(this);
        
        颜色 = new Label("画笔颜色",Label.CENTER);
        大小B = new Label("画笔大小",Label.CENTER);
        大小E = new Label("橡皮大小",Label.CENTER);
        //面板添加组件
        /*toolPanel.add(openPic);
        toolPanel.add(savePic);*/
        setMenuBar(bar);
        bar.add(B);
        B.add(newPic);
        B.add(openPic);
        B.add(savePic);
        B.add(exitPic);
        bar.add(C);
        C.add(pen);
        C.add(drLine);
        C.add(drCircle);
        C.add(drRect);
        bar.add(D);
        D.add(Calculator);
        D.add(Clock);
        
        
        /*toolPanel.add(pen);
        toolPanel.add(drLine);
        toolPanel.add(drCircle);
        toolPanel.add(drRect); */

        toolPanel.add(颜色); toolPanel.add(ColChoice);
        toolPanel.add(大小B); toolPanel.add(SizeChoice);
        toolPanel.add(colchooser);
        
        toolPanel.add(eraser);
        toolPanel.add(大小E); toolPanel.add(EraserChoice);
        
        toolPanel.add(clear);
        //工具面板到APPLET面板
   
        add(toolPanel,BorderLayout.NORTH);
        
        setBounds(60,60,900,600); setVisible(true);
        validate();
        //dialog for save and load
        //个人添加
        newPicture = new FileDialog(this,"新建图画",FileDialog.LOAD);
        newPicture.setVisible(false);

        openPicture = new FileDialog(this,"打开图画",FileDialog.LOAD);
        openPicture.setVisible(false);
        savePicture = new FileDialog(this,"保存图画",FileDialog.SAVE);
        savePicture.setVisible(false);

        openPicture.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            { openPicture.setVisible(false); }
        });

        savePicture.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            { savePicture.setVisible(false); }
        });

        addWindowListener(new WindowAdapter()
        {
        public void windowClosing(WindowEvent e)
        { System.exit(0);}
        });

    }

    private void MenuBar(MenuBar bar2) {
        // TODO Auto-generated method stub
        
    }

    private void setButton(Button bar2) {
        // TODO Auto-generated method stub
        
    }

    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;
        
        Point p1,p2;
        
        n = paintInfo.size();

        if(toolFlag==2)
        g.clearRect(0,0,getSize().width,getSize().height);//清除
        
        for(int i=0; i<n ;i++)
        {
            p1 = (Point)paintInfo.elementAt(i);
            p2 = (Point)paintInfo.elementAt(i+1);
            size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
            
            g2d.setColor(p1.col);
            g2d.setStroke(size);
   
            if(p1.tool==p2.tool)
            {
                switch(p1.tool)
                {
                    case 0://画笔
            
                    Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
                    g2d.draw(line1);
                    break;
            
                    case 1://橡皮
                    g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);
                    break;

                    case 3://画直线
                    Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
                    g2d.draw(line2);
                    break;
            
                    case 4://画圆
                    Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));
                    g2d.draw(ellipse);
                    break;
                    
                    case 5://画矩形
                    Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));
                    g2d.draw(rect);
                    break;
                    
                    case 6://截断,跳过
                    i=i+1;
                    break;

                    default :
                }//end switch
            }//end if
        }//end for
    }
   
    public void itemStateChanged(ItemEvent e)
    {
        if(e.getSource()==ColChoice)//预选颜色
        {
            String name = ColChoice.getSelectedItem();
            
            if(name=="black")
            {c = new Color(0,0,0); }
            else if(name=="red")
                {c = new Color(255,0,0);}
                else if(name=="green")
                    {c = new Color(0,255,0);}
                    else if(name=="blue")
                        {c = new Color(0,0,255);}
        }
        else if(e.getSource()==SizeChoice)//画笔大小
            {
                String selected = SizeChoice.getSelectedItem();
               
                if(selected=="1")
                {
                con = 1;
                size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

                }
                else if(selected=="3")
                    {
                    con = 3;
                    size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
                    
                    }
                    else if(selected=="5")
                        {con = 5;
                        size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
                        
                        }
                        else if(selected=="7")
                                {con = 7;
                                size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
                                
                                }
                            else if(selected=="9")
                                {con = 9;
                                size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
                                
                                }
            }
            else if(e.getSource()==EraserChoice)//橡皮大小
                {
                String Esize = EraserChoice.getSelectedItem();
               
                if(Esize=="5")
                { Econ = 5*2; }
                    else if(Esize=="9")
                        { Econ = 9*2; }
                        else if(Esize=="13")
                            { Econ = 13*2; }
                            else if(Esize=="17")
                                { Econ = 17*3; }

                }

    }
   
    public void mouseDragged(MouseEvent e)
    {
        Point p1 ;
        switch(toolFlag)
        {
            case 0://画笔
            x = (int)e.getX();
            y = (int)e.getY();
            p1 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p1);
            repaint();
            break;
            
            case 1://橡皮
            x = (int)e.getX();
            y = (int)e.getY();
            p1 = new Point(x, y, null, toolFlag, Econ);
            paintInfo.addElement(p1);
            repaint();
            break;
   
            default :
        }
    }

    public void mouseMoved(MouseEvent e) {}
   
    public void update(Graphics g)
    {
    paint(g);
    }

    public void mousePressed(MouseEvent e)
    {
        Point p2;
        switch(toolFlag)
        {
            case 3://直线
            x = (int)e.getX();
            y = (int)e.getY();
            p2 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p2);
            break;

            case 4: //圆
            x = (int)e.getX();
            y = (int)e.getY();
            p2 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p2);
            break;

            case 5: //矩形
            x = (int)e.getX();
            y = (int)e.getY();
            p2 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p2);
            break;
            
            default :
        }
    }

    public void mouseReleased(MouseEvent e)
    {
        Point p3;
        switch(toolFlag)
        {
            case 0://画笔
            paintInfo.addElement(cutflag);
            break;
            
            case 1: //eraser
            paintInfo.addElement(cutflag);
            break;
   
            case 3://直线
            x = (int)e.getX();
            y = (int)e.getY();
            p3 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p3);
            paintInfo.addElement(cutflag);
            repaint();
            break;
   
            case 4: //圆
            x = (int)e.getX();
            y = (int)e.getY();
            p3 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p3);
            paintInfo.addElement(cutflag);
            repaint();
            break;

            case 5: //矩形
            x = (int)e.getX();
            y = (int)e.getY();
            p3 = new Point(x, y, c, toolFlag, con);
            paintInfo.addElement(p3);
            paintInfo.addElement(cutflag);
            repaint();
            break;
   
            default:
        }
    }

    public void mouseEntered(MouseEvent e){}
   
    public void mouseExited(MouseEvent e){}
   
    public void mouseClicked(MouseEvent e){}

    public void actionPerformed(ActionEvent e)
    {
   
        if(e.getSource()==pen)//画笔
        {toolFlag = 0;}
        
        if(e.getSource()==eraser)//橡皮
        {toolFlag = 1;}
        
        if(e.getSource()==clear)//清除
        {
        toolFlag = 2;
        paintInfo.removeAllElements();
        repaint();
        }

        if(e.getSource()==drLine)//画线
        {toolFlag = 3;}
        
        if(e.getSource()==drCircle)//画圆
        {toolFlag = 4;}
        
        if(e.getSource()==drRect)//画矩形
        {toolFlag = 5;}
   
        if(e.getSource()==colchooser)//调色板
        {
            Color newColor = JColorChooser.showDialog(this,"调色板",c);
            c = newColor;
        }
   
        if(e.getSource()==newPic)//新建画图------个人添加
        {
            int n = JOptionPane.showConfirmDialog(null, "是否先保存所做的更改?新建后请先在操作中先选定画笔在操作", "新建画图框", JOptionPane.YES_NO_OPTION);
            if (n == JOptionPane.YES_OPTION) {
                savePicture.setVisible(true);
                try{
                    File fileout = new File(savePicture.getDirectory(),savePicture.getFile());
                    picOut = new FileOutputStream(fileout);
                    VOut = new ObjectOutputStream(picOut);
                    VOut.writeObject(paintInfo);
                    VOut.close();
                    }
                catch(IOException IOe)
                {
                System.out.println("can not write object"); }
                toolFlag = 2;
                paintInfo.removeAllElements();
                repaint();
                //清除
                toolFlag = 2;
                paintInfo.removeAllElements();
                repaint();
                }
             else if (n == JOptionPane.NO_OPTION)
             {
                toolFlag = 2;
                paintInfo.removeAllElements();
                repaint();
             }
   
        }
        
        if(e.getSource()==openPic)//打开图画
        {     
            //打开
            openPicture.setVisible(true);
            if(openPicture.getFile()!=null)
            {     //清除
                toolFlag = 2;
                paintInfo.removeAllElements();
                repaint();//打开
                int tempflag;
                tempflag = toolFlag;
                toolFlag = 2 ;
                repaint();
               
                try
                {
                    paintInfo.removeAllElements();
                    File filein = new File(openPicture.getDirectory(),openPicture.getFile());
                    picIn = new FileInputStream(filein);
                    VIn = new ObjectInputStream(picIn);
                    paintInfo = (Vector)VIn.readObject();
                    VIn.close();
                    repaint();
                    toolFlag = tempflag;
   
                }
               
                catch(ClassNotFoundException IOe2)
                {
                repaint();
                toolFlag = tempflag;
                System.out.println("can not read object");
                }
                catch(IOException IOe)
                {
                repaint();
                toolFlag = tempflag;
                System.out.println("can not read file");
                }
            }
   
        }
        
        if(e.getSource()==savePic)//保存图画
        {
            savePicture.setVisible(true);
            try
            {
                File fileout = new File(savePicture.getDirectory(),savePicture.getFile());
                picOut = new FileOutputStream(fileout);
                VOut = new ObjectOutputStream(picOut);
                VOut.writeObject(paintInfo);
                VOut.close();
            }
            catch(IOException IOe)
            {
                System.out.println("can not write object");
            }
        }
        
        if(e.getSource()==exitPic)//退出画图-----个人添加
        {
        int n = JOptionPane.showConfirmDialog(null, "确认退出吗?", "确认退出框", JOptionPane.YES_NO_OPTION);
        if (n == JOptionPane.YES_OPTION) {
            System.exit(1);
        } else if (n == JOptionPane.NO_OPTION) {
        } }
        //时钟
        if(e.getSource()==Clock)
        {//Clock.addActionListener(new ActionListener(){
            //public void actionPerformed(ActionEvent e){
                Calendar c=Calendar.getInstance();
                int year=c.get(Calendar.YEAR);
                int month=c.get(Calendar.MONTH);
                int date=c.get(Calendar.DATE);
                int hour=c.get(Calendar.HOUR_OF_DAY);
                int minute=c.get(Calendar.MINUTE);
                int month2 = month+1;
                    String a=year+"年"+month2+"月"+date+"日"+hour+":"+minute;
                     int n = JOptionPane.showConfirmDialog(null, a, "当前时间为",JOptionPane.OK_CANCEL_OPTION);
                       }
            //});}
        //计算器程序
        if(e.getSource()==Calculator){//Caculator te=new Caculator();
            Frame f=new Frame("计算器");
            Panel mp;
            String[] names={"7","8","9","+","4","5","6","-","1","2","3","*","c","0","=","/"};
            Button[] buttons=new Button[16];
            mp=new Panel();
            TextField text=new  TextField();
            f.add("North",text);
            mp.setLayout(new GridLayout(5,5));
            add("Center",mp);
            for(int i=0;i<buttons.length;i++){
                buttons[i]=new Button(names[i]);
                mp.add(buttons[i]);
                buttons[i].addActionListener(this);
            }
            mp.add(new TextField());
            f.add(mp);
            f.setSize(250,250);
            f.setVisible(true);
            if(e.getSource()==buttons[1]){ text.setText(names[1]);}//String t="1"; text.setText(t); System.out.println(1.0); }
            

            
        }
    }


}//end paintboard .


public class Pb
{
    public static void main(String args[])
     { new paintboard("画图程序"); }
}
搜索更多相关主题的帖子: import 计算器 
2013-12-29 03:40
快速回复:这个程序我想加个计算器进去不会加求大神帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049223 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved