import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class OptimizeCalculator extends JFrame implements ActionListener{
JFrame frame;
//基本按钮
private JButton jia=new JButton("+");
private JButton jian=new JButton("-");
private JButton cheng=new JButton("*");
private JButton chu=new JButton("/");
private JButton qiuyi=new JButton("%");
private JButton deng=new JButton("=");
private JButton fu=new JButton("+/-");
private JButton dian=new JButton(".");
private JButton kai=new JButton("sqrt");
private JButton diao=new JButton("1/x");
private JButton aa=new JButton("A");
private JButton bb=new JButton("B");
private JButton cc=new JButton("C");
private JButton dd=new JButton("D");
private JButton ee=new JButton("E");
private JButton ff=new JButton("F");
JMenuItem copy,paste,s,t,help,about,me;//主菜单栏
JRadioButton sixteen,ten,eight,two;//单选按钮,进制切换
JButton backspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,num8,num9;//数字按钮
private TextField k1=new TextField(); //可编辑的当行文本
private objConversion convert = new objConversion();//类的实例化
Container cp;//一个可包含其他 AWT 组件的组件
JTextField text;//编辑单行文本,和TextField具有兼容性,具有TextField不具有的功能
String copycontent="";
boolean clickable=true,clear=true;//clickable判断数字中是否已经有点 clear判断是否已经点了符号位,如:加减乘除
double qian; //点击符号是文本框已经存在的数字
String fuhao;//加减乘除。。。。符号
int jin=10,first=1;
//主体
public OptimizeCalculator(){
setTitle("计算器-李晓明制作");
setSize(400,300);//窗口的显示大小
setLocation(250,200);//在电脑屏幕的位置
text=new JTextField(25);//构造一个具有指定列数的新的空 TextField。
text.setText("0.");//将此 TextComponent 文本设置为指定文本。
text.setHorizontalAlignment(JTextField.RIGHT);//返回文本的对齐方式,从右到左
JPanel cp1=new JPanel();//JPanel 是一般轻量级容器
JPanel cp2=new JPanel();
JPanel cp3=new JPanel();
cp=getContentPane();//返回此窗体的 contentPane 对象
cp.add(cp1,"North");// 将指定的组件添加到此容器的指定位置。
cp.add(cp2,"Center");
cp.add(cp3,"South");
cp1.setLayout(new GridLayout(1,6));//设置此容器的布局管理器。
cp2.setLayout(new GridLayout(2,4));
cp3.setLayout(new GridLayout(6,6));
sixteen=new JRadioButton("十六进制");//创建一个具有指定文本的状态为未选择的单选按钮。
sixteen.setVisible(false);//使该组件可见或不可见。true 使该组件可见;false 使其不可见
ten=new JRadioButton("十进制",true);//创建一个具有指定文本和选择状态的单选按钮
ten.setVisible(false);
eight=new JRadioButton("八进制");
eight.setVisible(false);
two=new JRadioButton("二进制");
two.setVisible(false);
sixteen.addActionListener(this);//将一个 ActionListener(监听器) 添加到按钮中。
ten.addActionListener(this);
eight.addActionListener(this);
two.addActionListener(this);
//使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。
ButtonGroup btg=new ButtonGroup();
btg.add(sixteen);
btg.add(ten);
btg.add(eight);
btg.add(two);
//计算器布局设置开始
cp1.add(text);
text.setEditable(false);//设置指定的 boolean 变量,以指示此 TextComponent 是否应该为可编辑的。
text.setBackground(new Color(255, 255, 255));//设置此组件的背景色。背景色仅在组件是不透明时才使用
cp2.add(sixteen);
cp2.add(ten);
cp2.add(eight);
cp2.add(two);
backspace=new JButton("Backspace");
backspace.setForeground(new Color(255,0,0));
backspace.addActionListener(this);
ce=new JButton("CE");
ce.setForeground(new Color(255,0,0));
ce.addActionListener(this);
c=new JButton("C");
c.setForeground(new Color(255,0,0));
c.addActionListener(this);
k1.setVisible(false);//设置不可见
cp2.add(k1);
cp2.add(backspace);
cp2.add(ce);
cp2.add(c);
num0=new JButton("0");
num1=new JButton("1");
num2=new JButton("2");
num3=new JButton("3");
num4=new JButton("4");
num5=new JButton("5");
num6=new JButton("6");
num7=new JButton("7");
num8=new JButton("8");
num9=new JButton("9");
cp3.add(num7);
num7.addActionListener(this);
cp3.add(num8);
num8.addActionListener(this);
cp3.add(num9);
num9.addActionListener(this);
cp3.add(chu);
chu.setForeground(new Color(255,0,0));
chu.addActionListener(this);
cp3.add(kai);
kai.addActionListener(this);
cp3.add(num4);
num4.addActionListener(this);
cp3.add(num5);
num5.addActionListener(this);
cp3.add(num6);
num6.addActionListener(this);
cp3.add(cheng);
cheng.setForeground(new Color(255,0,0));
cheng.addActionListener(this);
cp3.add(qiuyi);
qiuyi.addActionListener(this);
cp3.add(num1);
num1.addActionListener(this);
cp3.add(num2);
num2.addActionListener(this);
cp3.add(num3);
num3.addActionListener(this);
cp3.add(jian);
jian.setForeground(new Color(255,0,0));
jian.addActionListener(this);
cp3.add(diao);
diao.addActionListener(this);
cp3.add(num0);
num0.addActionListener(this);
cp3.add(fu);
fu.addActionListener(this);
cp3.add(dian);
dian.addActionListener(this);
cp3.add(jia);
jia.setForeground(new Color(255,0,0));
jia.addActionListener(this);
cp3.add(deng);
deng.setForeground(new Color(255,0,0));
deng.addActionListener(this);
cp3.add(aa);
aa.addActionListener(this);
cp3.add(bb);
bb.addActionListener(this);
cp3.add(cc);
cc.addActionListener(this);
cp3.add(dd);
dd.addActionListener(this);
cp3.add(ee);
ee.addActionListener(this);
cp3.add(ff);
ff.addActionListener(this);
aa.setVisible(false);
bb.setVisible(false);
cc.setVisible(false);
dd.setVisible(false);
ee.setVisible(false);
ff.setVisible(false);
//设置计算器布局结束
//菜单设置
JMenuBar mainMenu = new JMenuBar();
setJMenuBar(mainMenu);
JMenu editMenu = new JMenu("编辑");
JMenu viewMenu = new JMenu("查看");
JMenu helpMenu = new JMenu("帮助");
mainMenu.add(editMenu);
mainMenu.add(viewMenu);
mainMenu.add(helpMenu);
copy = new JMenuItem(" 复制");
paste = new JMenuItem(" 粘贴");
//表示键盘或等效输入设置上的键操作的 KeyStroke
KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
copy.setAccelerator(copyks);//设置菜单选项加上快捷键
KeyStroke pasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
paste.setAccelerator(pasteks);//设置菜单选项加上快捷键
editMenu.add(copy);
editMenu.add(paste);
copy.addActionListener(this);
paste.addActionListener(this);
t = new JMenuItem("●标准型");
s = new JMenuItem(" 科学型");
viewMenu.add(t);
viewMenu.add(s);
t.addActionListener(this);
s.addActionListener(this);
help = new JMenuItem(" 帮助主题");
about = new JMenuItem(" 关于计算器");
me = new JMenuItem(" 作者主页");
helpMenu.add(help);
helpMenu.add(about);
helpMenu.add(me);
help.addActionListener(this);
about.addActionListener(this);
me.addActionListener(this);
//菜单设置结束
//结束窗口
addWindowListener(new WindowDestroyer());
}
温馨提示:内容为网友见解,仅供参考