单击“运算器实验“按钮,弹出一个新窗体,可以进行算术运算,但要实现基本的加减乘除运算;
单击“文字效果实验”按钮,弹出一个新窗体,在新窗体上有输入框,可以对自己输入的文字进行字体和颜色变换;
单击“鼠标事件实验”按钮,弹出一个新窗体,在新窗体上可以进行简单的绘画。
计算器
Calculator
import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; public class Caculator extends JFrame implements ActionListener { public static void main(String[] args) { new Caculator(); } private StringBuilder sBuilder = new StringBuilder(); //利用StringBuilder类来显示,以及区分两个操作数 JTextArea text=new JTextArea(); double a,b; Double sum; int i; String str=""; String str2=""; private List<String> countNum = new ArrayList<String>(); // 存储历史记录 public Caculator() { setBounds(100,100,400,400); setTitle("计算器"); JMenuBar menubar=new JMenuBar();//创建菜单条 JMenu menu1=new JMenu("查看(V)");//创建和设置菜单名 JMenu menu2=new JMenu("编辑(E)");//创建和设置菜单名 JMenu menu3=new JMenu("帮助(H)");//创建和设置菜单名 JMenuItem item1 = new JMenuItem("查看历史记录"); //编写二级菜单 JMenuItem item2 = new JMenuItem("编辑历史记录"); JMenuItem item3 = new JMenuItem("帮助"); menu1.add(item1); menu2.add(item2); menu3.add(item3); menubar.add(menu1);//将菜单加入到菜单条中 menubar.add(menu2); menubar.add(menu3); this.setJMenuBar(menubar);//将设置好的菜单条放在窗口中 this.setLayout(new BorderLayout());//添加文本框 item1.addActionListener(this);//为二级菜单栏添加监听事件 item2.addActionListener(this); item3.addActionListener(this); JPanel p1=new JPanel(); JPanel p2=new JPanel(); text.setPreferredSize(new Dimension (370,60));//设置组件大小 p2.setLayout(new FlowLayout()); p1.add(text); this.add(p1,BorderLayout.NORTH); p2.setLayout(new GridLayout(5,4)); //添加按钮 JButton button[]=new JButton[20]; button[0]=new JButton("C"); //清空 button[1]=new JButton("CE"); //清除之前输入的一个数据 button[2]=new JButton("sqrt"); //取余 button[3]=new JButton("÷"); //除法 button[4]=new JButton("7"); button[5]=new JButton("8"); button[6]=new JButton("9"); button[7]=new JButton("x"); //乘号 button[8]=new JButton("4"); button[9]=new JButton("5"); button[10]=new JButton("6"); button[11]=new JButton("—"); //减号 button[12]=new JButton("1"); button[13]=new JButton("2"); button[14]=new JButton("3"); button[15]=new JButton("+"); //加号 button[16]=new JButton("1/X"); //乘方 button[17]=new JButton("0"); button[18]=new JButton("."); //小数点 button[19]=new JButton("="); //等于 for(int i=0;i<button.length;i++ ) //将组件加入容器 p2.add(button[i]); button[19].setBackground(Color.ORANGE);//设置按钮的背景颜色为橙色 p2.add(button[19]); add(p2,BorderLayout.CENTER); for(int i=0;i<button.length;i++) //为每一个事件(按钮)添加监视器 button[i].addActionListener(this); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击X号可以关闭程序 } public void actionPerformed(ActionEvent e) //事件处理 { String lab=e.getActionCommand(); //得到当前的按钮字符,后面进行匹配 if(lab.equals("0")) //处理按钮 0~9 { sBuilder.append("0");//利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前所有输入的数据 } else if(lab.equals("1")) { sBuilder.append("1"); //利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前所有输入的数据 } else if(lab.equals("2")) { sBuilder.append("2"); //利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前所有输入的数据 } else if(lab.equals("3")) { sBuilder.append("3"); //利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前所有输入的数据 } else if(lab.equals("4")) { sBuilder.append("4"); text.setText(sBuilder.toString()); } else if(lab.equals("5")) { sBuilder.append("5"); text.setText(sBuilder.toString()); } else if(lab.equals("6")) { sBuilder.append("6"); text.setText(sBuilder.toString()); } else if(lab.equals("7")) { sBuilder.append("7"); text.setText(sBuilder.toString()); } else if(lab.equals("8")) { sBuilder.append("8"); text.setText(sBuilder.toString()); } else if(lab.equals("9")) { sBuilder.append("9"); //利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前所有输入的数据 } else if(lab.equals("CE")) //处理"CE"按钮事件 即清除当前的输入的数据 { sBuilder.deleteCharAt(sBuilder.length() - 1); //StringBuilder的实例化对象调用方法下标减1即可 text.setText(sBuilder.toString()); } else if(lab.equals("C")) //处理"CE"按钮事件 即清除之前的输入所有的数据 { sBuilder = new StringBuilder(); //重新创建即可清除之前的输入所有的数据 text.setText(sBuilder.toString()); } else if(lab.equals(".")) // 处理按钮 "." 事件 { sBuilder.append("."); //利用StringBuilder类的对象调用方法,将数据存起来 text.setText(sBuilder.toString()); //显示之前输入的数据 } else if(lab.equals("+")) //处理+"按钮乘法 { a = Double.parseDouble(sBuilder.toString()); //将 运算符 之前的数据 作为第一个操作数 a i=0; sBuilder = new StringBuilder(); //将数组清空来存储第二个操作数 b text.setText("+"); } else if(lab.equals("—")) //处理"—"按钮乘法 { str="—"; a = Double.parseDouble(sBuilder.toString()); //将前面的输入的数 作为第一个操作数a i=1;