实验12图形用户界面.doc

上传人:scccc 文档编号:13060045 上传时间:2021-12-13 格式:DOC 页数:12 大小:201.50KB
返回 下载 相关 举报
实验12图形用户界面.doc_第1页
第1页 / 共12页
实验12图形用户界面.doc_第2页
第2页 / 共12页
实验12图形用户界面.doc_第3页
第3页 / 共12页
实验12图形用户界面.doc_第4页
第4页 / 共12页
实验12图形用户界面.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《实验12图形用户界面.doc》由会员分享,可在线阅读,更多相关《实验12图形用户界面.doc(12页珍藏版)》请在三一文库上搜索。

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.parseDo

30、uble (textAnswer.getText();/ 求倒数if (temp =butt on Dao && clickable = true ) Stri ng s =textA nswer .getText();if (s.charAt(0) ='O'&& s.length() = 1) textAnswer .setText( "0 没有倒数”); clickable = false ; else boolea n isDec = true/正负号if (temp =butt on AddA ndSub&& c

31、lickabletrue ) String tem = textA nswer .getText();if (tem.charAt(O)='-')textAnswer .setText("");for ( int j = 1; j < temength(); j+) textA nswer .setText(textA nswer .getText() +tem.charAt(j); else tem ="-"+ tem;textA nswer .setText(tem);/ Ceif (temp =buttonCe ) textA

32、nswer .setText(""); / Cif (temp = buttonC ) vard = answerd = 0; textAnswer .setText( "" );/ 退格if (temp = buttonBk ) String str1;str1 = textAnswer .getText();textAnswer .setText( "" );for ( int j = 0; j < str1.length() - 1; j+) char c = str1.charAt(j);textAnswer .setText( textAnswer .getText() + c); / 主函数public static void main(String args) new cal();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1