西南科技大学JAVA实验四实验报告.docx
- 文档编号:18137127
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:18
- 大小:128.73KB
西南科技大学JAVA实验四实验报告.docx
《西南科技大学JAVA实验四实验报告.docx》由会员分享,可在线阅读,更多相关《西南科技大学JAVA实验四实验报告.docx(18页珍藏版)》请在冰点文库上搜索。
西南科技大学JAVA实验四实验报告
面向对象程序设计A(Java)
实验报告
实验名称:
GUI实验
实验类型:
设计型
指导教师:
刘涌
专业班级:
信安1205
姓名:
刘追
学号:
5120155364
实验地点:
东六E501
实验成绩:
日期:
2016年11月12日
实验四GUI实验
一、实验目的
练习Java图形用户界面设计、界面布局、事件设计方法,熟悉GUI程序设计的基本技术、基本Widget的使用、GUI设计用户接口的方法
二、实验内容
设计一个类似Windows计算器的Application应用程序
三、实验设计
1、采用JavaApplication方式建立应用程序Calculator的框架
2、仿照Windows计算器,实现界面设计。
将contentPane分成两个jPanel(borderlayout),其中一个放置文本框,另一个继续划分为两部分,分别以FlowLayout和GridLayout的形式放置按钮。
设置按钮、文本框等的Text值及相应属性的修改。
3、设计方法:
设两个变量value1、value2分别存储运算符左右两个操作数,设置标识符flag,初值为0,此时输入的数传给value1,当按下+-*\时设置flag为1,此时输入的数字传给value2;按下”=”时,根据value1,value2及op值进行计算并输出至文本框
4、设计方法调节程序bug
5、点击事先设计的计算器数字按钮,显示框出现相应数字;点击“+-*/”时,显示框出现相应字符;输入计算式后再输入“=”,显示框出现计算结果,基本实现Windows计算器功能
四、实验过程
1、采用JavaApplication方式建立应用程序框架
2、仿照Windows计算器,利用多种布局方式实现界面设计
3、组装操作数和运算符,完成简单的整数加、减、乘、除运算
4、通过getTxt()方法来获得显示框txt内容,setTxt()方法把字符显示在Txt框内;通过Integer.parseInt(String)实现字符串到整型的转换,String.valueOf(Int)实现整型到字符串的转换。
5、遇到的问题:
显示txt框无法显示两位及以上的数字。
解决方法:
txt.setTxt(String.valueOf(num*10+btnNum));把原来的数字*10,再加上要显示的字符并且将整型数字转化为字符串。
五、实验结果
运行程序可得到一与Windows计算器界面类似(形式由自己设定的计算器,可实现加、减、乘、除简单数学运算。
六、讨论与分析
1.通过这次实验懂得了GUI的基本设计过程和其实现
2.对java的图形用户界面设计、事件设计方法有了进一步的了解
3.学会了制作简单的计算器
七、附录:
关键代码(给出适当注释,可读性高)
publicclassCalculatorextendsjavax.swing.JFrame{
publicCalculator(){
initComponents();
}
privatevoidinitComponents(){
//设置主面板按钮
menuBar=newjavax.swing.JMenuBar();
fileMenu=newjavax.swing.JMenu();
openMenuItem=newjavax.swing.JMenuItem();
saveMenuItem=newjavax.swing.JMenuItem();
saveAsMenuItem=newjavax.swing.JMenuItem();
exitMenuItem=newjavax.swing.JMenuItem();
helpMenu=newjavax.swing.JMenu();
contentsMenuItem=newjavax.swing.JMenuItem();
aboutMenuItem=newjavax.swing.JMenuItem();
editMenu=newjavax.swing.JMenu();
cutMenuItem=newjavax.swing.JMenuItem();
copyMenuItem=newjavax.swing.JMenuItem();
pasteMenuItem=newjavax.swing.JMenuItem();
deleteMenuItem=newjavax.swing.JMenuItem();
jLabel1.setText("jLabel1");
jButton1.setText("jButton1");
jCheckBox1.setText("jCheckBox1");
jButton2.setText("jButton2");
javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(
jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGap(0,100,
Short.MAX_VALUE));
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGap(0,100,
Short.MAX_VALUE));
jCheckBox2.setText("jCheckBox2");
jCheckBox2.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(java.awt.event.ActionEventevt){
jCheckBox2ActionPerformed(evt);
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setCursor(newjava.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
txtText.setFont(newjava.awt.Font("微软雅黑",0,24));
txtText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
txtText.setText("0");
txtText.setAutoscrolls(false);
txtText.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(java.awt.event.ActionEventevt){
}
});
fileMenu.setText("\u67e5\u770b");
openMenuItem.setText("Open");
fileMenu.add(openMenuItem);
saveMenuItem.setText("Save");
fileMenu.add(saveMenuItem);
saveAsMenuItem.setText("SaveAs...");
fileMenu.add(saveAsMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(java.awt.event.ActionEventevt){
exitMenuItemActionPerformed(evt);
}
});
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
helpMenu.setText("Help");
contentsMenuItem.setText("Contents");
helpMenu.add(contentsMenuItem);
aboutMenuItem.setText("About");
helpMenu.add(aboutMenuItem);
editMenu.setText("Edit");
cutMenuItem.setText("Cut");
editMenu.add(cutMenuItem);
copyMenuItem.setText("Copy");
editMenu.add(copyMenuItem);
pasteMenuItem.setText("Paste");
editMenu.add(pasteMenuItem);
deleteMenuItem.setText("Delete");
editMenu.add(deleteMenuItem);
helpMenu.add(editMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout
.setHorizontalGroup(layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout
.createSequentialGroup()
.addContainerGap()
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING,
false)
.addGroup(
layout
.createSequentialGroup()
.addComponent(
.addGap(21,21,21)));
layout
.setVerticalGroup(layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(
layout
.createSequentialGroup()
.addGap(26,26,26)
.addComponent(
txtText,
javax.swing.GroupLayout.PREFERRED_SIZE,
64,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18,18,18)
.addGroup(
layout
.createParallelGroup(
javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(
//其他按键功能设置已省略
jButton26,
javax.swing.GroupLayout.PREFERRED_SIZE,38,
javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jButton32,
javax.swing.GroupLayout.PREFERRED_SIZE,83,
javax.swing.GroupLayout.PREFERRED_SIZE)).addContainerGap(60,Short.MAX_VALUE)));
pack();
}
booleanisOperPressed=false;//为true时输入下一个数字时清屏
intoper=0;//1实现加,2实现减,3实现乘,4实现除,5实现取余
intnumber1=0;//参与运算的第一个数字,保存在number1中
privatevoidjButton8ActionPerformed(java.awt.event.ActionEventevt){//←按键,实现回退功能
Strings=txtText.getText();//获取屏幕上的字符串
intnum=Integer.parseInt(s);//转换为整形
num=num/10;
s=Integer.toString(num);//转换为字符型
txtText.setText(s);//显示到屏幕上
}
privatevoidjButton9ActionPerformed(java.awt.event.ActionEventevt){//C按键,实现清屏功能
txtText.setText("0");
}
privatevoidjButton10ActionPerformed(java.awt.event.ActionEventevt){//CE按键,实现初始化功能
txtText.setText("0");
isOperPressed=false;
oper=0;
number1=0;
}
privatevoidjButton17ActionPerformed(java.awt.event.ActionEventevt){//取余
if(oper!
=0){//ifelse语句实现连运算下同
dengyu();
oper=5;
}
else{
Strings=txtText.getText();
number1=Integer.parseInt(s);//保存屏幕上的数字
oper=5;
isOperPressed=true;//清屏
}
}
privatevoidjButton16ActionPerformed(java.awt.event.ActionEventevt){//除
if(oper!
=0){
dengyu();
oper=4;
}
else{
Strings=txtText.getText();
number1=Integer.parseInt(s);
oper=4;
isOperPressed=true;
}
}
privatevoidjButton21ActionPerformed(java.awt.event.ActionEventevt){//乘
if(oper!
=0){
dengyu();
oper=3;
}
else{
Strings=txtText.getText();
number1=Integer.parseInt(s);
oper=3;
isOperPressed=true;
}
}
privatevoidjButton26ActionPerformed(java.awt.event.ActionEventevt){//减
if(oper!
=0){
dengyu();
oper=2;
}
else{
Strings=txtText.getText();
number1=Integer.parseInt(s);
oper=2;
isOperPressed=true;
}
}
privatevoidjButton31ActionPerformed(java.awt.event.ActionEventevt){//加
if(oper!
=0){
dengyu();
oper=1;
}
else{
Strings=txtText.getText();
number1=Integer.parseInt(s);
oper=1;
isOperPressed=true;
}
}
privatevoidjButton32ActionPerformed(java.awt.event.ActionEventevt){//=
dengyu();
}
publicvoiddengyu()//等于方法,在屏幕上显示出计算结果
{
intnumber2;
Strings;
isOperPressed=true;
switch(oper){
case0:
break;
case1:
number2=Integer.parseInt(txtText.getText());
number1=number1+number2;
s=Integer.toString(number1);
txtText.setText(s);//显示到屏幕上,其他数字输出显示方式同
oper=0;
break;
}
}
privatevoidjButton15ActionPerformed(java.awt.event.ActionEventevt){//数字9按键
if(!
isOperPressed){
//原来的数*10再加上按上去的数显示到屏幕上
Strings=txtText.getText();
intnum=Integer.parseInt(s);
num=num*10+9;
s=Integer.toString(num);
txtText.setText(s);
}else{//点击清屏并显示点击的数字
txtText.setText("9");
isOperPressed=false;
}
}
privatevoidjButton14ActionPerformed(java.awt.event.ActionEventevt){
if(!
isOperPressed){
Strings=txtText.getText();
intnum=Integer.parseInt(s);
num=num*10+8;
s=Integer.toString(num);
txtText.setText(s);
}else{
txtText.setText("8");
isOperPressed=false;
}
}
privatevoidjButton13ActionPerformed(java.awt.event.ActionEventevt){
if(!
isOperPressed){
Strings=txtText.getText();
intnum=Integer.parseInt(s);
num=num*10+7;
s=Integer.toString(num);
txtText.setText(s);
}else{
txtText.setText("7");
isOperPressed=false;
}
}
privatevoidjButton20ActionPerformed(java.awt.event.ActionEventevt){
if(!
isOperPressed){
Strings=txtText.getText();
intnum=Integer.parseInt(s);
num=num*10+6;
s=Integer.toString(num);
txtText.setText(s);
}else{
txtText.setText("6");
isOperPressed=false;
}
}
privatevoidjButton19ActionPerformed(java.awt.event.ActionEventevt){
if(!
isOperPressed){
Strings=txtText.getText();
intnum=Integ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南 科技大学 JAVA 实验 报告