怎么用eclipse去编写一个计算器

怎么用eclipse去编写一个计算器,第1张

eclipse中一般是使用java swing做界面,计算器的函数功能使用一些工具函数,示例如下:

import javaxswing;

import javaawt;

import javaawtevent;

public class Calculator extends JFrame implements ActionListener{

private static final long serialVersionUID = 8199443193151152362L;

private JButton bto_s=new JButton("sqrt"),bto_zf=new JButton("+/-"),bto_ce=new JButton("CE"),bto_c=new JButton("C"),bto_7=new JButton("7"),

bto_8=new JButton("8"),bto_9=new JButton("9"),bto_chu=new JButton("/"),bto_4=new JButton("4"),bto_5=new JButton("5"),

bto_6=new JButton("6"),bto_cheng=new JButton(""),bto_1=new JButton("1"),bto_2=new JButton("2"),bto_3=new JButton("3"),

bto_jian=new JButton("-"),bto_0=new JButton("0"),bto_dian=new JButton(""),bto_deng=new JButton("="),bto_jia=new JButton("+");

JButton button[]={bto_s,bto_zf,bto_ce,bto_c,bto_7,bto_8,bto_9,bto_chu,bto_4,bto_5,bto_6,bto_cheng,bto_1,bto_2,bto_3,bto_jian,

    bto_0,bto_dian,bto_deng,bto_jia};

private JTextField text_double;// = new JTextField("0");

private String operator = "="; //当前运算的运算符

private boolean firstDigit = true; // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字

private double resultNum = 00; // 计算的中间结果

private boolean operateValidFlag = true; //判断 *** 作是否合法

public Calculator()

{

   super("Calculator");

   thissetBounds(300, 300, 300, 300);

   thissetResizable(false);

   thissetBackground(Colororange);

   thissetDefaultCloseOperation(EXIT_ON_CLOSE);

   thisgetContentPane()setLayout(new BorderLayout());//设置布局

   text_double=new JTextField("0",20);//设置文本区

   text_doublesetHorizontalAlignment(JTextFieldRIGHT);//设置水平对齐方式未右对齐

   thisgetContentPane()add(text_double,BorderLayoutNORTH);//将文本区添加到Content北部

   JPanel panel=new JPanel(new GridLayout(5,4));//在内容窗口添加一个网格布局

   thisgetContentPane()add(panel);//添加panel面板

   for(int i=0;i<buttonlength;i++)//在面板上添加按钮

    paneladd(button[i]);

  

   for(int i=0;i<buttonlength;i++)

   button[i]addActionListener(this);//为按钮注册

   text_doublesetEditable(false);//文本框不可编辑

   text_doubleaddActionListener(this);//

  

   thissetVisible(true);

}

public void actionPerformed(ActionEvent e)//

{

   String c= egetActionCommand();//返回与此动作相关的命令字符串

   if(cequals("C")){

    handleC();           //用户按了“C”键

   }

   else if (cequals("CE"))       // 用户按了"CE"键

   {

    text_doublesetText("0");

   }

   else if ("0123456789"indexOf(c) >= 0) // 用户按了数字键或者小数点

   {

    handleNumber(c); // handlezero(zero);

   } else            //用户按了运算符键

   {

               handleOperator(c);

   }

}

private void handleC()       // 初始化计算器的各种值

{

   text_doublesetText("0");

   firstDigit = true;

   operator = "=";

   }

private void handleNumber(String button) {

   if (firstDigit)//输入的第一个数字

   {

   text_doublesetText(button);

   } else if ((buttonequals("")) && (text_doublegetText()indexOf("") < 0))//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面

    //如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1

   {

   text_doublesetText(text_doublegetText() + "");

   } else if (!buttonequals(""))//   如果输入的不是小数点,则将数字附在结果文本框的后面

   {

   text_doublesetText(text_doublegetText() + button);

   }

//   以后输入的肯定不是第一个数字了

   firstDigit = false;

   }

private void handleOperator(String button) {

  

   if (operatorequals("/")) {

//   除法运算

//   如果当前结果文本框中的值等于0

   if (getNumberFromText() == 00){

//    *** 作不合法

   operateValidFlag = false;

   text_doublesetText("除数不能为零");

   } else {

   resultNum /= getNumberFromText();

   }

   } else if (operatorequals("+")){

//   加法运算

   resultNum += getNumberFromText();

   } else if (operatorequals("-")){

//   减法运算

   resultNum -= getNumberFromText();

   } else if (operatorequals("")){

//   乘法运算

   resultNum = getNumberFromText();

   } else if (operatorequals("sqrt")) {

//   平方根运算

    if(getNumberFromText()<0){

     operateValidFlag = false;

    text_doublesetText("被开方数不能为负数");}

    else

   resultNum = Mathsqrt(resultNum);

   }

   else if (operatorequals("+/-")){

//    正数负数运算

    resultNum = resultNum  (-1);

    } else if (operatorequals("=")){

//    赋值运算

    resultNum = getNumberFromText();

    }

   if (operateValidFlag) {

//    双精度浮点数的运算

    long t1;

    double t2;

    t1 = (long) resultNum;

    t2 = resultNum - t1;

    if (t2 == 0) {

    text_doublesetText(StringvalueOf(t1));

    } else {

    text_doublesetText(StringvalueOf(resultNum));

    }

    }

   operator = button; //运算符等于用户按的按钮

   firstDigit = true;

   operateValidFlag = true;

}

private double getNumberFromText() //从结果的文本框获取数字

{

   double result = 0;

   try {

   result = DoublevalueOf(text_doublegetText())doubleValue(); // ValueOf()返回表示指定的 double 值的 Double 实例

   } catch (NumberFormatException e){

   }

   return result;

   }

public static void main(final String[] args) {

new Calculator();

}

}

首先用Eclipse设置好界面

2

设计出来的运行界面如下图:

3

当选中树中的某个节点时,节点值设置到了文本框中, 实现效果如下:

4

主要功能代码如下:

END

全部功能代码

import javaawtEventQueue;

import javaxswingJFrame;

import javaxswingJPanel;

import javaxswingJTree;import javaxswingborderEmptyBorder;

import javaxswingeventTreeSelectionEvent;

import javaxswingeventTreeSelectionListener;

import javaxswingtreeDefaultMutableTreeNode;

import javaxswingJScrollPane;

import javaxswingJTextField;

public class AppDemo extends JFrame {

private JPanel contentPane;

private JTextField textField;

public static void main(String[] args) {

EventQueueinvokeLater(new Runnable() {

public void run() {

try {

AppDemo frame = new AppDemo();

framesetVisible(true);

} catch (Exception e) {

eprintStackTrace();

}

}

});

}

public AppDemo() {

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

setTitle("测试");

contentPane = new JPanel();

contentPanesetBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPanesetLayout(null);

JScrollPane scrollPane = new JScrollPane();

scrollPanesetBounds(30, 20, 196, 217);

contentPaneadd(scrollPane);

final JTree tree = new JTree();

scrollPanesetViewportView(tree); textField = new JTextField();

textFieldsetBounds(252, 35, 172, 27);

contentPaneadd(textField);

treeaddTreeSelectionListener(new TreeSelectionListener() {

public void valueChanged(TreeSelectionEvent e) {

DefaultMutableTreeNode note = (DefaultMutableTreeNode) treegetLastSelectedPathComponent();

String name = notetoString();//获得这个结点的名称

textFieldsetText(name);

}

});

}

}

以上就是关于怎么用eclipse去编写一个计算器全部的内容,包括:怎么用eclipse去编写一个计算器、Java Swing JTree怎么获取选中节点值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9787606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存