Version 1.0
功能实现:
1.基础计算机界面布局
2.实现简单的四则运算操作(加减乘除)和清除功能
效果:
![](https://i-blog.csdnimg.cn/blog_migrate/9a8c505f9faeafdf24fd6aad4275b401.png)
Java实现计算器 Version 1.0
代码实现:
package pers.nico.windowtest;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class CalculatorTest {
public static void main(String[] args) {
CalculatorTest test = new CalculatorTest();
test.Caluclator();
}
private JFrame frame;
//0-9个数字按钮
private JButton button0,button1,button2,button3,button4,button5,button6,button7,button8,button9;
//.,+,-,*,/,= 6个按钮(bot 小数点,add 加,sub 减,mul 乘,div 除,equ 等于)
private JButton bot,add,sub,mul,div,equ;
//清除按钮
private JButton buttonclear;
//南部面板,放置数字和运算符按钮
private JPanel panelsouth;
//北部面板,放置文本框和清除按钮
private JPanel panelnorth;
//显示输入的方式
private JTextField text;
public void Caluclator()
{
frame = new JFrame("Nico的计算器-Version 0.1");
BorderLayout blo = new BorderLayout();
//设置布局管理器为BorderLayout
frame.setLayout(blo);
Dimension preferredsize = new Dimension(80,60);//设置按钮大小
//设置文本框区域
text = new JTextField(15);
text.setFont(new Font("黑体",Font.BOLD,20));
//实例化清除按钮并设置按钮显示文字
buttonclear = new JButton("清除");
//实例化数字按钮并设置按钮显示文字
button0 = new JButton("0");
button0.setPreferredSize(preferredsize);//设置按钮大小
button1 = new JButton("1");
button2 = new JButton("2");
button3 = new JButton("3");
button4 = new JButton("4");
button5 = new JButton("5");
button6 = new JButton("6");
button7 = new JButton("7");
button8 = new JButton("8");
button9 = new JButton("9");
//实例化符号按钮并设置按钮显示文字
bot = new JButton(".");
add = new JButton("+");
sub = new JButton("-");
mul = new JButton("*");
div = new JButton("/");
equ = new JButton("=");
panelsouth = new JPanel();
//设置南部面板采用网格布局(4*4)
panelsouth.setLayout(new GridLayout(4,4));
panelnorth = new JPanel();
//设置北部面板采用流式布局
panelnorth.setLayout(new FlowLayout());
//将文本框和清除按钮添加到北部面板
panelnorth.add(text);
panelnorth.add(buttonclear);
//将北部面板添加到主面板
frame.add(panelnorth,BorderLayout.NORTH);
//将数字和符号添加到南部面板
//第1行
panelsouth.add(button7);
panelsouth.add(button8);
panelsouth.add(button9);
panelsouth.add(div);
//第2行
panelsouth.add(button4);
panelsouth.add(button5);
panelsouth.add(button6);
panelsouth.add(mul);
//第3行
panelsouth.add(button1);
panelsouth.add(button2);
panelsouth.add(button3);
panelsouth.add(sub);
//第4行
panelsouth.add(bot);
panelsouth.add(button0);
panelsouth.add(add);
panelsouth.add(equ);
//将南部面板添加到主面板
frame.add(panelsouth,BorderLayout.SOUTH);
MyEvent();//数字和符号按钮的事件处理
frame.setSize(300, 350);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//功能方法
//事件处理方法
public void MyEvent()
{
//为各个按钮添加事件处理
jButton(button0);
jButton(button1);
jButton(button2);
jButton(button3);
jButton(button4);
jButton(button5);
jButton(button6);
jButton(button7);
jButton(button8);
jButton(button9);
jButton(bot);
jButton(add);
jButton(sub);
jButton(mul);
jButton(div);
//清除按钮事件,文本框为空
buttonclear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.setText("");
}
});
//"="事件处理
equ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
text.setText(text.getText()+equ.getText());
try
{
//加法运算
if(text.getText().contains("+"))
{
StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
double d1,d2=0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreElements())
{
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}
//将运算结果放到text
text.setText(text.getText()+""+(d1+d2));
}
//减法运算
else if(text.getText().contains("-"))
{
StringTokenizer st1 = new StringTokenizer(text.getText(),"-");
double d1,d2=0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreElements())
{
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2=Double.parseDouble(st2.nextToken());
}
//将运算结果放到text
text.setText(text.getText()+""+(d1-d2));
}
//乘法运算
else if(text.getText().contains("*"))
{
StringTokenizer st1 = new StringTokenizer(text.getText(),"*");
double d1,d2=0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreElements())
{
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2=Double.parseDouble(st2.nextToken());
}
//将运算结果放到text
text.setText(text.getText()+""+(d1*d2));
}
//除法运算
else if(text.getText().contains("/"))
{
StringTokenizer st1 = new StringTokenizer(text.getText(),"/");
double d1,d2=0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreElements())
{
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2=Double.parseDouble(st2.nextToken());
}
//将运算结果放到text
text.setText(text.getText()+""+(d1/d2));
}
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null, "输入的不是简单的四则运算公式!");
text.setText(null);
e1.printStackTrace();
}
}
});
}
//数字和符号按钮的事件处理方法
public void jButton (JButton button)
{
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
StringBuffer buffer = new StringBuffer();
buffer.append(text.getText());
buffer.append(button.getText());
text.setText(buffer.toString());
}
});
}
}
编程小白,仅作学习记录📝