计算器Word文档格式.docx
- 文档编号:18645324
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:13
- 大小:35.18KB
计算器Word文档格式.docx
《计算器Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算器Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
f.setLayout(newGridBagLayout());
//设置为网格包布局
GridBagConstraintsgbc=newGridBagConstraints();
//创建网格包约束条件
gbc.fill=GridBagConstraints.BOTH;
//设置组件具有的填充模式为both
gbc.anchor=GridBagConstraints.CENTER;
//设置当组件小于显示区域时,居中显示;
Containerconta=f.getContentPane();
//初始化容器获取窗口f的内容窗格
Containerconta1=dig.getContentPane();
//初始化容器
dig.setTitle("
关于计算器"
dig.setBounds(200,200,350,150);
jta=newJTextArea();
jta.setBounds(0,0,350,150);
dig.add(jta);
jta.setLineWrap(true);
jta.setEditable(false);
jta.setFont(newFont("
宋体"
Font.BOLD+Font.ITALIC,20));
jta.setText("
此计算器可用于一些简单的计算,比如加减乘除,求倒数,开方等等"
jta.setForeground(Color.red);
dig1.setTitle("
提示"
dig1.setBounds(200,200,200,150);
jta.setBounds(0,0,200,150);
dig1.add(jta);
开方数不能为负数"
m=newJMenuBar();
//创建一个菜单栏
me1=newJMenu("
文件"
me2=newJMenu("
帮助"
m.add(me1);
m.add(me2);
me1.add(newJMenuItem("
打开"
));
me1.addSeparator();
保存"
//加入分隔线;
JMenuItemexitItem=newJMenuItem("
退出"
exitItem.addActionListener(f);
me1.add(exitItem);
JMenuItemabout=newJMenuItem("
about.addActionListener(f);
me2.add(about);
for(inti=0;
i<
b.length;
i++)
{
b[i]=newJButton("
"
+i);
b[i].setFont(newFont("
Font.BOLD,16));
b[i].addActionListener(f);
}
bt1=newJButton("
Back"
bt2=newJButton("
C"
bt3=newJButton("
/"
bt4=newJButton("
*"
bt5=newJButton("
+"
bt6=newJButton("
-"
bt7=newJButton("
="
bt8=newJButton("
."
bt9=newJButton("
sqrt"
bt10=newJButton("
%"
bt11=newJButton("
1/x"
bt12=newJButton("
+/-"
JButtonb1[]={bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt10,bt11,bt12};
12;
b1[i].setFont(newFont("
b1[i].addActionListener(f);
p1=newJPanel();
p1.setLayout(newGridLayout(1,2));
p1.add(bt1);
p1.add(bt2);
p2=newJPanel();
p2.setLayout(newGridLayout(5,4));
p2.add(b[7]);
p2.add(b[8]);
p2.add(b[9]);
p2.add(bt3);
p2.add(b[4]);
p2.add(b[5]);
p2.add(b[6]);
p2.add(bt4);
p2.add(b[1]);
p2.add(b[2]);
p2.add(b[3]);
p2.add(bt5);
p2.add(b[0]);
p2.add(bt12);
p2.add(bt8);
p2.add(bt6);
p2.add(bt11);
p2.add(bt10);
p2.add(bt9);
p2.add(bt7);
f.addCom(m,conta,gbc,0,0,1,1,1,1);
f.addCom(t,conta,gbc,1,0,1,0,1,1);
f.addCom(p1,conta,gbc,2,0,1,0,1,1);
f.addCom(p2,conta,gbc,3,0,5,4,1,5);
t.setHorizontalAlignment(JTextField.LEFT);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
privatevoidaddCom(Componentc,Containercon,GridBagConstraintsgbc,introw,intcol,intnuRow
intnuCol,intweightx,intweighty)//自定义方法
gbc.gridx=col;
gbc.gridy=row;
gbc.gridwidth=nuCol;
gbc.gridheight=nuRow;
gbc.weightx=weightx;
gbc.weighty=weighty;
con.add(c,gbc);
}
privatebooleancompare(charstr)
if(chs.empty())
{//栈为空时优先级最低返回高
returntrue;
charlast=(char)chs.lastElement();
switch(str)
case'
*'
:
if(last=='
+'
||last=='
-'
)
else
returnfalse;
/'
||last=='
%'
publicBigDecimalcalculate(Stringstr)
StringBuffersb=newStringBuffer(str);
StringBuffernum=newStringBuffer();
Stringtem=null;
charnext;
//privatebooleanisNum(Stringnum)
//{
//returnnum.matches("
[0-9]"
//}
while(sb.length()>
0)
tem=sb.substring(0,1);
//取第一位字符
sb.delete(0,1);
//去掉一位
if(isNum(tem)==true||tem.matches("
\\."
)==true)
num.append(tem);
//如果是数字就将其放入num当中
else//取得字符不是数据是,则认为num放置的是一个完整的数字,
{//比如123+2,123就被认为是一个完整的数
if(num.length()>
0&
&
!
.equals(num.toString()))
BigDecimalbd=newBigDecimal(num.toString());
//将num转换成BigDeciamal类型的数据
numbers.push(bd);
//将其放入栈中
num.delete(0,num.length());
//将num清空,等待放入新值
if(!
chs.isEmpty())
while(compare(tem.charAt(0))==false)
{//当当前的运算符优先级等于或小于栈顶运算符时,将栈中运算符从栈顶依次弹出进行运算
calculate();
if(numbers.isEmpty())//数字栈为空时,运算式的第一个数字为负数
chs.push(newCharacter(tem.charAt(0)));
//如果不为空,将其压入栈内
next=sb.charAt(0);
if(next=='
)//判断开头字符是否为'
,如果是,则认为该数字是负数,类似1*-2
num.append(next);
sb.delete(0,1);
//同时去掉一位
//由于前面将数字放入栈内,是通过获取服饰处理的,导致最后一个数字没有放入栈中,因此将最后一个数字放入栈中
//此时栈上面最多只有2个符号,根据优先级符号进行运算
while(!
returnnumbers.pop();
privatevoidcalculate()//计算方法
BigDecimalb=numbers.pop();
//弹出栈顶的数
BigDecimala=null;
a=numbers.pop();
//弹出栈顶第二个数
charope=chs.pop();
//弹出栈顶符号
BigDecimalresult=null;
//运算结果
switch(ope)
result=a.add(b);
numbers.push(result);
//将结果放入操作数栈内
break;
result=a.subtract(b);
result=a.multiply(b);
result=a.divide(b,3,RoundingMode.HALF_UP);
//case'
//result=a.remainder(b);
//numbers.push(result);
//break;
privatebooleanisNum(Stringnum)//判断是否为数字
returnnum.matches("
publicvoidactionPerformed(ActionEvente)
//if(e.getActionCommand()=="
//System.exit(0);
//dig.setVisible(true);
if(e.getSource()==bt2)//清空C的设置
t.setText("
if(e.getSource()==bt1)//back设置
StringBuilderstrb=newStringBuilder(t.getText());
if(t.getText().length()!
=0)
t.setText(strb.delete(strb.length()-1,strb.length()).toString());
i++)//1到9按键
if(e.getSource()==b[i])
{Stringstr=t.getText();
str+=("
t.setText(str);
JButton[]b2={bt3,bt4,bt5,bt6,bt8,bt10};
//加,减,乘,除,小数点,百分号
b2.length;
if(e.getSource()==b2[i])
Stringstr=t.getText();
str=str+b2[i].getActionCommand();
if(e.getSource()==bt12)//负号
t.setText(str+"
if(e.getSource()==bt7)//等于号
Stringstr1=calculate(str)+"
;
t.setText(str1);
if(e.getSource()==bt9)//开方
if(str.charAt(0)=='
dig1.setVisible(true);
doubledb=Math.sqrt(calculate(str).doubleValue());
t.setText(db+"
if(e.getSource()==bt11)//求倒数
Stringstr=t.getText();
doublea=calculate(str).doubleValue();
doubleb=1/a;
t.setText(b+"
classGridFrameextendsJFrame{
//定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3
JPanelp=newJPanel(newGridLayout(4,4,3,3));
JTextAreat=newJTextArea();
//定义文本框
//定义字符串数组,为按钮的显示文本赋值
//注意字符元素的顺序与循环添加按钮保持一致
Stringstr[]={"
7"
"
8"
9"
4"
5"
6"
1"
2"
3"
0"
};
publicGridFrame(Strings){
super(s);
//为窗体名称赋值
setLayout(newBorderLayout());
//定义窗体布局为边界布局
JButtonbtn[];
//声明按钮数组
btn=newJButton[str.length];
//创建按钮数组
//循环定义按钮,并添加到面板中
str.length;
i++){
btn[i]=newJButton(str[i]);
p.add(btn[i]);
//将文本框放置在窗体NORTH位置
getContentPane().add(t,BorderLayout.NORTH);
//将面板放置在窗体CENTER位置
getContentPane().add(p,BorderLayout.CENTER);
setVisible(true);
setSize(250,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
//让窗体居中显示
publicstaticvoidmain(String[]args){
GridFramegl=newGridFrame("
网格布局计算机!
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算器