《java式子计算器》Word文档文档格式.docx
- 文档编号:5997086
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:24
- 大小:23.69KB
《java式子计算器》Word文档文档格式.docx
《《java式子计算器》Word文档文档格式.docx》由会员分享,可在线阅读,更多相关《《java式子计算器》Word文档文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
//textArea光标定位
intupoint=0;
//memory使用向上的位置
Numerresult=newNumer();
//结果暂存
NumerM;
//结果存储器
Stringformula="
"
;
//式子
Stringcopty="
//复制的式子
Memorymemorys[]=newMemory[100];
//存储历史最大记录
intnumber=0;
//存储计数器
booleanupfirst=true;
//判断是否首次使用向上
publicCaculator(){
super("
计算器"
);
container.setLayout(layout);
addMenu();
addTextArea();
addTextField();
addButton();
add(container);
}
//添加菜单
privatevoidaddMenu(){
JMenumenus[]=newJMenu[3];
//主菜单
menus[0]=newJMenu("
查看(V)"
menus[0].setMnemonic('
V'
menus[1]=newJMenu("
编辑(E)"
menus[1].setMnemonic('
E'
menus[2]=newJMenu("
帮助(H)"
menus[2].setMnemonic('
H'
JMenuItemlookItem[]=newJMenuItem[2];
//子菜单
JMenuItemaditItem[]=newJMenuItem[3];
JMenuItemhelpItem[]=newJMenuItem[2];
lookItem[0]=newJMenuItem("
普通型(O)"
lookItem[0].setMnemonic('
O'
//快捷键
lookItem[1]=newJMenuItem("
标准型(T)"
lookItem[1].setMnemonic('
T'
aditItem[0]=newJMenuItem("
复制(C)Ctrl+C"
aditItem[0].setMnemonic(java.awt.event.KeyEvent.VK_C);
aditItem[1]=newJMenuItem("
粘贴(P)Ctrl+V"
aditItem[1].setMnemonic(java.awt.event.KeyEvent.VK_V);
aditItem[2]=newJMenuItem("
自由编辑(F)"
aditItem[2].setMnemonic('
F'
helpItem[0]=newJMenuItem("
关于主题(H)"
helpItem[0].setMnemonic('
helpItem[1]=newJMenuItem("
关于计算器(A)"
MenuActionmenuaction=newMenuAction();
lookItem[0].addActionListener(menuaction);
//菜单监听器
lookItem[1].addActionListener(menuaction);
aditItem[0].addActionListener(menuaction);
aditItem[1].addActionListener(menuaction);
aditItem[2].addActionListener(menuaction);
helpItem[0].addActionListener(menuaction);
helpItem[1].addActionListener(menuaction);
JMenuBarbar=newJMenuBar();
//菜单容器吧
menus[0].add(lookItem[0]);
menus[0].add(lookItem[1]);
menus[1].add(aditItem[0]);
menus[1].add(aditItem[1]);
menus[1].add(aditItem[2]);
menus[2].add(helpItem[0]);
menus[2].add(helpItem[1]);
setJMenuBar(bar);
//把菜单绑到窗口上的方法
bar.add(menus[0]);
bar.add(menus[1]);
bar.add(menus[2]);
//添加显示区
privatevoidaddTextArea(){
constraints.gridx=0;
//组件x位置
constraints.gridy=0;
//组件y位置
constraints.gridheight=1;
//组件高度
constraints.gridwidth=10;
//组件宽度
constraints.fill=GridBagConstraints.BOTH;
//组件随显示变化的选项
constraints.weightx=1;
//水平扩展,即显示变化时,长度变化
constraints.weighty=1;
//垂直扩展,即高度变化
textArea.setEditable(false);
//不可编辑
JScrollPanespane=newJScrollPane(textArea);
//滚动条添加
textArea.setFont(newFont("
Serif"
Font.PLAIN,18));
//显示字体
layout.setConstraints(spane,constraints);
//把布局设置应用到组件上
spane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
//需要时才出现滚动条
container.add(spane);
//把该组件添加到容器中
//添加输入区
privatevoidaddTextField(){
constraints.gridy=1;
constraints.gridwidth=5;
textField.setHorizontalAlignment(JTextField.RIGHT);
//光标右边显示
textField.setEditable(false);
//拒绝编辑
textField.setFont(newFont("
//textField.setText("
layout.setConstraints(textField,constraints);
container.add(textField);
//添加按钮
privatevoidaddButton(){
InsertActioninsert=newInsertAction();
CommandActioncommand=newCommandAction();
addbutton("
MC"
0,2,1,1,command);
addbutton("
MR"
1,2,1,1,command);
MS"
2,2,1,1,command);
M+"
3,2,1,1,command);
M-"
4,2,1,1,command);
Delete"
0,3,1,1,insert);
CE"
1,3,1,1,insert);
C"
2,3,1,1,insert);
±
3,3,1,1,insert);
√"
4,3,1,1,command);
7"
0,4,1,1,insert);
8"
1,4,1,1,insert);
9"
2,4,1,1,insert);
÷
3,4,1,1,command);
%"
4,4,1,1,command);
4"
0,5,1,1,insert);
5"
1,5,1,1,insert);
6"
2,5,1,1,insert);
×
3,5,1,1,command);
1/x"
4,5,1,1,command);
1"
0,6,1,1,insert);
2"
1,6,1,1,insert);
3"
2,6,1,1,insert);
-"
3,6,1,1,command);
+"
4,6,1,1,command);
0"
0,7,1,1,insert);
."
1,7,1,1,insert);
("
2,7,1,1,command);
)"
3,7,1,1,command);
="
4,7,2,1,command);
←"
0,8,1,1,command);
→"
1,8,1,1,command);
↑"
2,8,1,1,command);
↓"
3,8,1,1,command);
//单个按钮设置
privatevoidaddbutton(Stringlabel,intx,inty,intheight,intwidth,ActionListenerlistener){
JButtonbutton=newJButton(label);
constraints.gridx=x;
constraints.gridy=y;
constraints.gridheight=height;
constraints.gridwidth=width;
button.addActionListener(listener);
layout.setConstraints(button,constraints);
container.add(button);
//container.
//设置数值按钮监听器
//非计算符监听器。
主要是只在TextField操作的按钮
privateclassInsertActionimplementsActionListener{
publicvoidactionPerformed(ActionEventevent){
Stringinput=event.getActionCommand();
//获取输入的按钮
Stringoutput=textField.getText();
//获取输入区内容
if(!
input.equals("
)&
&
!
)){upfirst=true;
}//输入其他按钮时,去掉上下翻的功能
if(input.equals("
)){
if(fpoint>
0){//输入区的删除
textField.setText(output.substring(0,fpoint-1)+
output.substring(fpoint,output.length()));
if(fpoint>
0)fpoint--;
}//光标位置减一
elseif(apoint>
0){//显示区的删除
if(apoint==formula.length()){//尾部删除
formula=formula.substring(0,apoint-1);
textArea.setText(formula);
}
else{formula=formula.substring(0,apoint-1)+
formula.substring(apoint,formula.length());
textArea.setText(formula.substring(0,apoint-1)+"
┃"
+
formula.substring(apoint-1,formula.length()));
}//中间删除时需要恢复显示的光标
if(apoint>
0)apoint--;
return;
if(output.indexOf("
)==-1){//防止重复输入"
if(apoint<
formula.length()){//显示区中间插入"
inta=num_alenth(formula.substring(apoint));
intb=num_blenth(formula.substring(0,apoint));
if(b!
=0&
a!
=0){//确保在数值中添加"
if(formula.substring(apoint-b,apoint).indexOf("
)==-1
&
formula.substring(apoint,apoint+a).indexOf("
)==-1){
//判断插入的地方,数值数否含有"
formula=formula.substring(0,apoint)+input+
formula.substring(apoint,formula.length());
apoint++;
textArea.setText(formula.substring(0,apoint)+"
formula.substring(apoint,formula.length()));
}}}
elseif(fpoint<
output.length()&
fpoint>
0){//在输入区中间插入
textField.setText(output.substring(0,fpoint)+input+
output.substring(fpoint,output.length()));
fpoint++;
output=textField.getText();
elseif(fpoint==output.length()){//输入区尾部插入
if(output.length()==0){textField.setText("
0."
fpoint=2;
}//空输入时加"
else{textField.setText(output+"
fpoint++;
return;
//键入数字
if(!
//在式子上添加数字
if(apoint<
formula.length()){
formula=formula.substring(0,apoint)+input+
formula.substring(apoint,formula.length());
apoint++;
textArea.setText(formula.substring(0,apoint)+"
formula.substring(apoint,formula.length()));
//输入为0时被取代
if(output.equals("
textField.setText(input);
fpoint=input.length();
return;
//在中间插入数字
if(fpoint<
output.length()){
fpoint==0){return;
}//在开头添加0时跳过
elsetextField.setText(output.substring(0,fpoint)+input+
output.substring(fpoint,output.length()));
elseif(fpoint==output.length())textField.setText(output+input);
//尾部添加
fpoint++;
//保证每次按其他键时消去光标
if(output.indexOf("
)!
=-1){
intposition=output.indexOf("
fpoint=position;
textField.setText(output.substring(0,position)+output.substring(position+1,output.length()));
output=textField.getText();
}
if(input.equals("
if(output.equals("
))textField.setText("
-"
//输入为0时被取代
elseif(output.startsWith("
)){//已经有"
时去掉
textField.setText(output.substring
(1));
elsetextField.setText("
+output);
fpoint=textField.getText().length();
//重新输入
elseif(input.equals("
textArea.setText(formula);
apoint=formula.length();
textField.setText("
fpoint=0;
//重新计算
elseif(input.equals("
formula="
apoint=0;
print();
fpoint=textField.getText().length();
}}
//设置其他按钮监听器//其他监听器。
主要是在TextArea操作的按钮
privateclassCommandActionimplementsActionListener{
Stringinput=event.getActi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java式子计算器 java 式子 计算器 Word 文档