实验十一:图形界面二

实验代码:

import java.awt.BorderLayout;
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.JPanel;
import javax.swing.JTextField;

public class JiSuan extends JFrame{
JPanel panel;
JTextField text;
JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9; //0~9四个数字(可写成数组)
JButton bot,add,sub,mul,div,equ; //加减乘除以及小数点五个符号
public JiSuan(){
this.setBounds(300, 200, 400, 300); //窗体大小
this.setTitle("计算器"); //窗体名称
this.setLayout(new BorderLayout()); //设置计算机窗体的布局方式

text = new JTextField(15); //计算区域

//新建数字按钮
jb0 = new JButton("0");
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
jb6 = new JButton("6");
jb7 = new JButton("7");
jb8 = new JButton("8");
jb9 = new JButton("9");

//新建符号按钮
bot = new JButton(".");
add = new JButton("+");
sub = new JButton("-");
mul = new JButton("*");
div = new JButton("/");
equ = new JButton("=");

//新建计算器数字及符号所在区域面板
panel = new JPanel();
panel.setLayout(new GridLayout(4,4)); //设置面板的布局方式

//将各按钮组件放入面板(panel)中
//第一行
panel.add(jb7);
panel.add(jb8);
panel.add(jb9);
panel.add(div);
//第二行
panel.add(jb4);
panel.add(jb5);
panel.add(jb6);
panel.add(mul);
//第三行
panel.add(jb1);
panel.add(jb2);
panel.add(jb3);
panel.add(sub);
//第四行
panel.add(bot);
panel.add(jb0);
panel.add(equ);
panel.add(add);


this.add(text,BorderLayout.NORTH);
this.add(panel);

MyEvent(); //事件处理

this.setVisible(true); //设置窗体显示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体可关闭
}

public void MyEvent(){
/*将以下内容封装到Text方法中
* jb0.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// text.setText("0");
String str = jb0.getText();
System.out.println(str);
}

};*/
//为各按钮添加事件处理
Text(jb0);
Text(jb1);
Text(jb2);
Text(jb3);
Text(jb4);
Text(jb5);
Text(jb6);
Text(jb7);
Text(jb8);
Text(jb9);
Text(bot);
Text(add);
Text(sub);
Text(mul);
Text(div);

//“=”按钮的事件处理
equ.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

text.setText(text.getText()+equ.getText());

if(text.getText().contains("+")){//做加法运算
// String[] str1 = text.getText().split("+"); //错误语句
StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
// System.out.println("str1======"+st1.nextToken());
double d1,d2 = 0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
// System.out.println("str2======"+st2.nextToken());
d2 = Double.parseDouble(st2.nextToken());
}

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.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}

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.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}

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.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}

text.setText(text.getText()+" "+(d1/d2)); //将运算结果放到text区域
}
}

});
}

//各按钮的事件处理方法
public void Text(JButton button){
button.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// text.setText("0");
String str = button.getText();
// System.out.println(str);
text.setText(text.getText()+str);
}

});
// return button.getText();
}

//主函数
public static void main(String[] args) {
// TODO Auto-generated method stub
new JiSuan();
}

}

实验结果:

实验心得:

虽然实验还不是很完整,但基本能进行运算。

原文地址:https://www.cnblogs.com/Java199-wfx/p/11000103.html