小弟在校学生,java学的不好,求各位大侠帮忙!
老师的作业 一个是简单的加减乘除的计算器 一个是带计时功能的表,电子表那种求各位大侠了!还有几天就要交了!小弟先在这里感谢各位了!

解决方案 »

  1.   

    表看下jdk
    C:\jdk1.5.0\demo\applets\Clock
      

  2.   

    自带的demo那种是表盘的,我这个只要数字的就可以,
    gui啊?好象用不用都无所谓,只要是能够独立运行的applet就行,功能是像电子表那样,带个计时器的表,时间功能好象调用系统的就可以,计时器和表可以分开,不用在一个框里显示。
    我这个马上就要交了,最近根本没时间学java上网找还找不到,求各位好心的dx帮忙了!
      

  3.   

    计算器:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class Calculatorbysq extends JFrame 
    {
    private JTextField resultText;
    private JPanel textPanel;
    private JPanel controlPanel;
    private JPanel keyPanel;
    private boolean isNew = true; //是否为新数标志
    private String operation = ""; //运算符
    private String pnum; //前一个数

    public Calculatorbysq()
    {
    super("计算器");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    TextInit();     //初始化文本框
    ControlInit(); //初始化控制键
    KeyInit(); //初始化键盘
    Container panel = getContentPane();
    panel.setLayout(new BorderLayout());
    panel.add(textPanel,"North");
    panel.add(controlPanel,"Center");
    panel.add(keyPanel,"South");
    setResizable(false);
    //setSize(300,230);
    pack();
    setVisible(true);
    }

    private void TextInit()
    {
    textPanel = new JPanel();
    resultText = new JTextField("0",25);
    resultText.setHorizontalAlignment(JTextField.RIGHT);//靠右显示
    resultText.setEditable(false); //不可编辑
    resultText.setBackground(Color.WHITE);
    textPanel.add(resultText);
    }
    private void ControlInit()
    {    
    controlPanel = new JPanel();
    controlPanel.setLayout(new GridLayout(1,3,0,2));
    JButton Backapace = new JButton("Backspace");
    Backapace.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    if(isNew) //保证只在输入过程中可用
    {
    return;
    }
    else
    {
    String s = resultText.getText();
    int l = s.length();
    if(l!=1)              //多个数字
    {
    resultText.setText(s.substring(0,l-1));  
    }
    else //一个数字
    {
    resultText.setText("0");
    isNew = true;
    }
    }
    }
    });
    controlPanel.add(Backapace);

    JButton CE = new JButton("CE");
    CE.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    resultText.setText("0");
    isNew = true;
    }
    });
    controlPanel.add(CE);

    JButton C = new JButton("C");
    C.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    resultText.setText("0");
    isNew = true;
    }

    });
    controlPanel.add(C);
    }
    private void KeyInit()
    {
    keyPanel = new JPanel();
    keyPanel.setLayout(new GridLayout(4,5,3,4));
    String [] key = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
    for(int i=0;i<20;i++)
    {
    String label = key[i];
    Button btn = new Button(label);
    keyPanel.add(btn);
    btn.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    key_actionPerformsd(e);
    }
    });
    }
    }
    private void key_actionPerformsd(ActionEvent e)
    {
    String s = e.getActionCommand(); //取s为按键
    String text = resultText.getText(); //取text为当前显示
    if(s.equals("0"))
    {
    if(isNew)
    {
    if(operation.equals("")) //如果在新数且没有操作符情况下按下0
    {
    return;
    }
    else //新数有运算符,如:5+0时
    {
    resultText.setText(s);
    }
    }
    else
    resultText.setText(text+s); //不是新数
    }
    if(s.equals("+/-"))
    {
    if(text.equals("0")) //text为0时
    {
    return;
    }
    else //text不为0
    {
    double k = Double.parseDouble(text);
    display(-k);
    }
    }
    if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9"))
    {
    if(isNew)
    {
    resultText.setText(s);
    isNew = false;
    }
    else
    {
    resultText.setText(text+s);
    }
    }
    if(s.equals("."))
    {
    if((text.indexOf(".")==-1)) //显示框中没有"."
    {
    if(isNew) //新数
    {
    resultText.setText("0.");
    isNew = false;
    }
    else //非新数
    {
    resultText.setText(text+".");
    }
    }
    else //显示框中有"."
    {
    return;
    }
    }
    if(s.equals("="))
    {
    if(operation.equals(""))   //没有运算符
    {
    isNew = true;
    return;
    }
    else
    {
    compute(s);
    operation = "";
    isNew = true;
    }
    }
    if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))
    {
    if(operation=="")        //不当作=用,如:1+
    {
    operation = s;
    pnum = resultText.getText();
    isNew = true;
    }
    else //当作=用,如:1+2+
    {
    compute(s);
    isNew = true;
    }
    }
    if(s.equals("sqrt"))
    {
    double sqrttext = Double.parseDouble(text);
    if(sqrttext<0)
    {
    resultText.setText("函数输入无效!");
    isNew = true;
    }
    else
    {
    display(Math.sqrt(sqrttext)); 
    isNew = true;
    }
    }
    if(s.equals("%"))
    {
    double bfztext = Double.parseDouble(text); 
    display(bfztext/100);
    isNew = true;
    }
    if(s.equals("1/x"))
    {
    double reciprocaltext = Double.parseDouble(text); 
    if(reciprocaltext==0)
    {
    resultText.setText("除数不能为0!");
    isNew = true;
    }
    else
    {
    display(1/reciprocaltext);
    isNew = true;
    }
    }
    }
    private void compute(String s)
    {
    double data1 = Double.parseDouble(pnum); //data1为第一个数
    double data2 = Double.parseDouble(resultText.getText());//data2为当前数
    if(operation.equals("+"))
    {
    display(data1+data2);
    }
    if(operation.equals("-"))
    {
    display(data1-data2);
    }
    if(operation.equals("*"))
    {
    display(data1*data2);
    }
    if(operation.equals("/"))
    {
    if(data2==0)
    {
    resultText.setText("除数不能为0!");
    }
    else
    {
    display(data1/data2);
    }
    }
    pnum = resultText.getText(); //把当前结果存为前一数
    }
    private void display(double result)
    {
    int a = (int)result;
    if (a==result) //整数
    resultText.setText(String.valueOf(a));
    else //非整数
    resultText.setText(String.valueOf(result));
    }
    }
    public class Calculator //启动运行类
    {
    public static void main(String[]args)
    {
    new Calculatorbysq();
    }
    }
      

  4.   

    可能有的行太长有点乱,自己整理一下。下面是计时器,按一下开始计时,再按一下停止:
    import java.awt.*;
    //import java.awt.event.AWTEventListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.util.*;
    import java.text.SimpleDateFormat;
    public class TestStopWatch_v10
    {
    public static void main(String [] srgs)
    {
    final Frame f = new Frame("StopWatch");
    f.setSize(200,200);
    f.add(new StopWatch_v10());
    f.setVisible(true);
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e) 
    {
    f.setVisible(false);
    f.dispose();
    System.exit(0);
    }
    });
    }
    }
    class StopWatch_v10 extends Canvas implements Runnable
    {
    private long startTime = 0;
    private long endTime = 0;
    private boolean bstart = false;
    private boolean pORr = true;
    StopWatch_v10()
    {
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    setSize(80,30);
    }
    public void paint(Graphics g)
    {
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    Date d = null ;
    try
    {
    d = sdf.parse("00:00:00");
    }
    catch(Exception e)
    {
    System.out.println(e.getStackTrace());
    }
    d.setTime((int)(d.getTime()+(endTime - startTime)));
    String display = sdf.format(d);
    g.setColor(Color.black);
    g.drawRect(10,10,70,28);
    g.fill3DRect(12,12,66,24,false);
    g.setColor(Color.WHITE);
    g.drawString(display,20,30);
    }
    protected void processMouseEvent(MouseEvent e)
    {
    if(e.getID()==MouseEvent.MOUSE_PRESSED)
    {
    if (pORr == true)
    {
    bstart = true;
    startTime = endTime = System.currentTimeMillis();
    repaint();
    new Thread(this).start();
    pORr = false;
    }
    else
    {
    bstart = false;
    endTime = System.currentTimeMillis();
    repaint();
    pORr = true;
    }
    }
    /*else if(e.getID()==MouseEvent.MOUSE_RELEASED)
    {

    }*/
    } public void run() 
    {
    while(bstart)
    {
    try
    {
    Thread.sleep(100);
    }
    catch(Exception e)
    {
    System.out.println(e.getStackTrace());
    }
    endTime = System.currentTimeMillis();
    repaint();
    }
    }
    }
      

  5.   

    csdn 里的人 真有耐心 
    大家工作不忙么
      

  6.   

    感谢china8848() 大哥!就是有个问题,计时器里面没有时间功能,呵呵!能再帮弄一个吗?
      

  7.   

    大功告成:
    package execices;import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.text.SimpleDateFormat;
    public class TestStopWatch_v10
    {
    public static void main(String [] args)
    {
    MenuBar menubar = new MenuBar();
    Menu menu = new Menu("选择");
    MenuItem stop = new MenuItem("计时器");
    MenuItem time = new MenuItem("时间");
    menu.add(stop);
    menu.add(time);
    menubar.add(menu);

    final Frame f = new Frame("StopWatch");
    f.setMenuBar(menubar);
    f.setSize(200,200);
    final StopWatch_v10 stop_1 = new StopWatch_v10();
    final StopWatch_v20 time_1 = new StopWatch_v20();
    stop.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)  {
    f.remove(time_1);
    f.add(stop_1);
    f.validate();
    }
    });
    time.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    f.remove(stop_1);
    f.add(time_1);
    f.validate();
    }
    });
    f.setVisible(true);
    f.validate();
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e) 
    {
    f.setVisible(false);
    f.dispose();
    System.exit(0);
    }
    });
          }
    }
    class StopWatch_v10 extends Canvas implements Runnable
    {
    private long startTime = 0;
    private long endTime = 0;
    private boolean bstart = false;
    private boolean pORr = true;
    StopWatch_v10()
    {
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    setSize(80,30);
    }
    public void paint(Graphics g)
    {
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    Date d = null ;
    try
    {
    d =  sdf.parse("00:00:00");
    }
    catch(Exception e)
    {
    System.out.println(e.getStackTrace());
    }
    d.setTime((int)(d.getTime()+(endTime - startTime)));
    String display = sdf.format(d);
    g.setColor(Color.black);
    g.drawRect(10,10,70,28);
    g.fill3DRect(12,12,66,24,false);
    g.setColor(Color.WHITE);
    g.drawString(display,20,30);
    }
    protected void processMouseEvent(MouseEvent e)
    {
    if(e.getID()==MouseEvent.MOUSE_PRESSED)
    {
    if (pORr == true)
    {
    bstart = true;
    startTime = endTime = System.currentTimeMillis();
    repaint();
    new Thread(this).start();
    pORr = false;
    }
    else
    {
    bstart = false;
    endTime = System.currentTimeMillis();
    repaint();
    pORr = true;
    }
    }

    }
    public void run() 
    {
    while(bstart)
    {
    try
    {
    Thread.sleep(100);
    }
    catch(Exception e)
    {
    System.out.println(e.getStackTrace());
    }
    endTime = System.currentTimeMillis();
    repaint();
    }
    }
    }
    class StopWatch_v20 extends Canvas implements Runnable
    {
    StopWatch_v20()
    {
    setSize(80,30);
    new Thread(this).start();
    }
    public void paint(Graphics g)
    {
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");


    long time = System.currentTimeMillis();
    Date d2 = new Date(time);
    String display2 = sdf.format(d2);
    g.setColor(Color.black);
    g.drawRect(10,50,70,28);
    g.fill3DRect(12,52,66,24,false);

    g.setColor(Color.WHITE);
    g.drawString(display2,20,70);
    }
    public void run() 
    {
    while(true)
    {
    try
    {
    Thread.sleep(100);
    }
    catch(Exception e)
    {
    System.out.println(e.getStackTrace());
    }
    repaint();
    }
    }
    }20分值了,呵呵