实验12图形用户界面_第1页
实验12图形用户界面_第2页
实验12图形用户界面_第3页
实验12图形用户界面_第4页
实验12图形用户界面_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验 12 图形用户界面、 实 验目的1. 掌握 GUI 开发的基本过程2. 能够根据要求,选择合适的布局管理器和相应组件完成页面的布局3. 理解事件响应机制,掌握事件编程、实验题目1、完成课本 171-172 页的选择题和填空题2、完成 173 页编程题的第 4题3、下面是一个计算器实现的代码,有兴趣的同学可以进行阅读和分析import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEve

2、nt;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;public class cal implements ActionListener / 导入动作监听接口 / 设计面板中的单位J

3、Frame frame ;JTextField textAnswer ;JPanel panel1 , panel2 , panel3JLabel labelMemSpace ;JButton buttonBk , buttonCe , buttonCJButt onbutt on ;JButt onbutto nDotbutto nDiv,butto nAddA ndSub , butto nAdd buttonMod ;,buttonSub,buttonMulJButt onbutto nSqrt,butt on Dao , butt on Equal;DecimalFormat df ;

4、 / 设置数据输出精度booleanclickable ; / 控制当前能否按键double vard , answerd ; / 用来保存double型数据的中间值(vard) 和最后结果 (an swerd)short key = -1, prekey | = -1;/ key用来保存当前进行何种运算,prekey 用来保存前次进行何种运算String copy ; / 做复制用JTextArea help ; / 帮助/构造函数public cal() clickable = true ;an swerd = 0;frame = new JFrame("计算器");d

5、f = new DecimalFormat( "0.#");/ 设置数据输出精度 (对于double型值)textA nswer= new JTextField(15);textAnswer .setText("");textAnswer .setEditable( false );textA nswer .setBackgrou nd(new Color(255, 255, 255);pan el1 = new JPa nel();pan el2 = new JPa nel();frame .getContentPane().add(panel1 );

6、pan el1 .setLayout( new BorderLayout();/设计整个面板panel1 .add( textAnswer , BorderLayout.NORTH;labelMemSpace = new JLabel("");butto nBk = new JButto n("Backspace");butto nBk .setForegrou nd(new Color(255, 0, 0);buttonCe = new JButton( "CE" );buttonCe .setForeground(new Colo

7、r(255, 0, 0);"C" );new Color(255, 0, 0);buttonC = new JButton( buttonC .setForeground(buttonBk .addActionListener(this );buttonCe .addActionListener(this );buttonC .addActionListener( this );panel1 .add( panel2 , BorderLayout.CENTER);panel2 .setLayout( new FlowLayout(FlowLayout. RIGHT);pan

8、el2 .add( labelMemSpace );panel2 .add( buttonBk );panel2 .add( buttonCe );panel2 .add( buttonC );panel3 = new JPanel();panel1 .add( panel3 , BorderLayout.SOUTH);button = new JButton10;for ( int i = 0; i < button . length ; i+) button i =new JButton(Integer.toString (i);button i.setForeground(new

9、Color(0, 0, 255);buttonDot = new JButton( "." );"+/-" );new Color(0, 0, 255);buttonDot .setForeground( new Color(0, 0, 255);buttonAddAndSub = new JButton( buttonAddAndSub .setForeground( buttonEqual = new JButton( "=" );buttonAdd = new JButton( buttonAdd .setForeground(

10、 buttonSub = new JButton( buttonSub .setForeground( buttonMul = new JButton( buttonMul .setForeground( buttonDiv = new JButton( buttonDiv .setForeground( buttonMod = new JButton( buttonMod .setForeground( buttonSqrt = new JButton( buttonSqrt .setForeground( buttonDao = new JButton( buttonDao .setFor

11、eground("+" ); new Color(255, 0, 0);"-" );new Color(255, 0, 0);"*" );new Color(255, 0, 0);"/" );new Color(255, 0, 0);"%" );new Color(0, 0, 255);"sqrt" ); new Color(0, 0, 255);"1/x" );new Color(0, 0, 255);buttonEqual .setForeground

12、( new Color(255, 0, 0); / 将所有行为与监听绑定 panel3 .setLayout( new GridLayout(4, 5);panel3 .add( button 7);button 7.addActionListener( this );panel3 .add( button 8);button8.addActionListener(thispanel3.add( button 9);button9.addActionListener(thispanel3.add( buttonDiv );buttonDiv .addActionListener(thispan

13、el3.add( buttonSqrt );buttonSqrt .addActionListener(thispanel3.add( button 4);button4.addActionListener(thispanel3.add( button 5);button5.addActionListener(thispanel3.add( button 6);button6.addActionListener(thispanel3.add( buttonMul );buttonMul .addActionListener(thispanel3.add( buttonMod );buttonM

14、od .addActionListener(thispanel3.add( button 1);button1.addActionListener(thispanel3.add( button 2);button2.addActionListener(thispanel3.add( button 3);button3.addActionListener(thispanel3.add( buttonSub );buttonSub .addActionListener(thispanel3.add( buttonDao );buttonDao .addActionListener(thispane

15、l3.add( button 0);button0.addActionListener(thispanel3.add( buttonAddAndSub);););););););););););););););buttonAddAndSub .addActionListener();panel3 .add( buttonDot ); buttonDot .addActionListener(this );panel3 .add( buttonAdd ); buttonAdd .addActionListener(this );panel3 .add( buttonEqual );thisbut

16、tonEqual .addActionListener( this );frame .setDefaultCloseOperation(JFrame.frame .pack();frame .setVisible( true );/ 设置各个按钮行为);EXIT_ON_CLOSE);public void actionPerformed(ActionEvent event) Object temp = eve nt.getSource();/如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后for ( int i = 0; i <= 9; i+)if (temp = bu

17、tt on i && clickable = true )textA nswer .setText( textA nswer .getText() +In teger.toStri ng(i);按下"."按钮时,判断当前文本框内字符串中含不含/再插入"."II II,如果已含,则不允许if(temp =butt on Dot&& clickableboolea n isDot = false ;true ) if ( textAnswer.getText().length() = 0)isDot = true ;for (

18、int i = 0; i <textAnswer .getText().length(); i+)if ( '.'= textAnswer .getText().charAt(i) isDot = true ;break ;if (isDot = false )textA nswer .setText(textA nswer .getText() +".");if(temp =butt on Add | temp =butt on Sub | temp =temp = butt on Div )&& clickablebutt onMu

19、l|true/ +if (temp = butt on Add ) switch ( prekey ) case 0:an swerd += Double.parseDouble(textAnswer.getText();case 1:answerd -= Double.parseDouble(textAnswer.getText();case 2:answerd *= Double.parseDouble(textAnswer.getText();case 3:"除数不能为零”);if (Double. parseDouble (textAnswer .getText() = 0)

20、 textA nswer .setText( clickable = false elseanswerd /=Double. parseDouble (textAnswer .getText(); break ;defaultanswerd = Double. parseDouble (textAnswer .getText();textAnswer .setText(""); prekey = key = 0;/ -if (temp =butt on Sub ) switch ( prekey ) case 0:an swerd += Double.case 1:answ

21、erd -= Double.case 2:parseDoubleparseDoubleanswerd *= Double.parseDouble(textAnswer(textAnswer(textAnswer.getText();.getText();.getText();parseDouble);(textAnswer.getText();parseDouble(textAnswer.getText();parseDouble(textAnswer.getText();parseDouble(textAnswer.getText();"除数不能为零”);case 3:if (Do

22、uble. parseDouble (textAnswer.getText() = 0) textAnswer .setText("除数不能为零”); clickable = false ; elseanswerd /=Double. parseDouble (textAnswer.getText();break ;default :an swerd = Double.textA nswer .setText( prekey = key = 1;/ *if (temp = buttonMul ) switch ( prekey ) case 0:an swerd += Double.

23、case 1:answerd -= Double.case 2:answerd *= Double.case 3:if (Double. parseDouble (textAnswer.getText() = 0) textA nswer .setText( clickable = false elseDouble.answerd /= parseDouble (textA nswer.getText();break ;default :an swerd = Double.parseDouble(textAnswer.getText();an swerd += Double.case 1:pa

24、rseDoubleanswerd -= Double.case 2:answerd *= Double.parseDoubleparseDouble(textAnswer(textAnswer(textAnswer.getText();.getText();.getText();textAnswer .setText("");prekey =key = 2;/ /if (temp =butt on Div) switch (prekey )case 0:case 3:if (Double. parseDouble (textAnswer.getText() = 0) tex

25、tAnswer .setText("除数不能为零”); clickable = false ; elseDouble.answerd /=parseDouble (textA nswer .getText();break ;default :answerd = Double. parseDouble (textAnswer .getText();textAnswer .setText(""); prekey = key = 3; / =if (temp =butt on Equal&& clickable = true ) if ( prekey

26、= 5) if(key = 0) an swerd +=vard ; iftextA nswer.setText( df .format( answerd(key = 1) answerd -=vard ;textAnswer .setText( df .format(answerd ); else vard = Double.parseDouble (textAnswer .getText();if(key = 2) answerd *=vard ;textA nswer.setText(if(key = 3) answerd /=vard ;textA nswer.setText(df .

27、format(answerd );df .format(answerd );if(key = 0) prekey = -1;an swerd += Double.parseDouble df .format(textAnswer answerd );.getText();textA nswer.setText(key = 1) prekey = -15answerd -=Double.parseDouble(textAnswer.getText();textA nswer.setText(df .format(answerd );(key = 2) prekey = -15answerd *=

28、Double.parseDouble(textAnswer.getText();textA nswer.setText(df .format(answerd );(key = 3) prekey = -15answerd /= Double.parseDouble(textAnswer.getText();textA nswer.setText(df .format(answerd ); if if ifprekey = 5;/取余if (temp = buttonMod && clickable = true ) if ( answerd = 0) String s =tex

29、tA nswer .getText();textA nswer .setText(s); else /开根号if (temp = butt on Sqrt&& clickable= true ) Stri ng s =textA nswer.getText();if (s.charAt(O) ='-' ) textAnswer .setText("不能开根”); clickable = false ; else textAnswer .setText(Double.toString(java.Iang.Math.sqrt (Double.parseDouble (textAnswer.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论