《GUI 程序設(shè)計實驗報告》由會員分享,可在線閱讀,更多相關(guān)《GUI 程序設(shè)計實驗報告(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、廣 州 大 學(xué)實 驗 報 告學(xué) 院 工商管理學(xué)院 專業(yè)、班級 電子商務(wù) 姓名、學(xué)號 課程名稱 Java語言程序設(shè)計 項目名稱 GUI 程序設(shè)計 實驗時間:2013年 06月 09日 GUI 程序設(shè)計 實驗報告開課實驗室:文俊東6062013年06月09日學(xué)院工商管理學(xué)院年級、專業(yè)、班姓名成績課程名稱Java語言程序設(shè)計實驗項目名 稱GUI 程序設(shè)計指導(dǎo)教師簽名一、實驗?zāi)康?1) 掌握GUI 程序設(shè)計的基本技術(shù);(2) 掌握基本W(wǎng)idget的使用;(3) 掌握通GUI設(shè)計用戶接口的方法;二、實驗原理(算法分析(包括流程圖))1. CalcFace類按照Lcd類進行改造(將兩個類中的相關(guān)功能合并)
2、;2. 由于GUI程序已是消息驅(qū)動的,程序運行后就處于一個循環(huán)中,因此原仿真程序中Calcface中的input()方法以及Calculator中的on()方法就可棄之不用了。3.改造Toyface,為計算器界面布局,并將Toyface與Runcale合并使之能與calculator相連。4. System.out.println需改成向Jlabel對象輸出的語句三、實驗過程原始記錄(數(shù)據(jù)、圖表、計算等)1.運行程序2.進行運算 3.計算器其他按鈕的功能實現(xiàn)1)C的功能實現(xiàn) 按C后計算機只錄入9*; 2)N的功能實現(xiàn) 按N后結(jié)果變成-15 3)A的功能實現(xiàn) 按A后清空歸零 四、實驗感悟本次實驗
3、相對比較簡單,只需要安排好顯示界面和將兩個合并之后再對一些細節(jié)部分進行修改就可以了。完成實驗后我對顯示界面的布局更加了解了。五、附錄(自己實現(xiàn)的源代碼)/ CalcFace.java /import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;import javax.swing.BorderFactory;import javax.swing.JLabel;import javax.swing.JPanel;impor
4、t javax.swing.border.CompoundBorder;class CalcFace extends JPanel implements ActionListener public CalcFace(String k, byte pr)keys = k; prec = pr+; nbuf = new StringBuffer(prec);reset1();errorMode=false;errorStr=;d = new JLabel(in, JLabel.RIGHT);setBorder(BorderFactory.createCompoundBorder(BorderFac
5、tory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5,10, 5, 10);setLayout(new BorderLayout(); /設(shè)置布管理器reset2();add(d);addMouseListener(new ClickHandler(this); /注冊事件監(jiān)聽器 public void setCalc(Calculator ca)calc = ca; public void showNumber(String s) d.setText(hl+prompt + s+ht); public void
6、showOp(char op) /如果輸入的str為空,則清除errorMode /相當于主控模決發(fā)送一個消息給計算器,使其可知道當前計算器對象當前的狀態(tài) public void errorInput(String str) if(str.equals() errorMode=false; errorStr=; else errorMode=true; errorStr=str; prompt=prompt+( +str+ ); public void showStatus(String e) prompt=e; private void enter(char c) /當計算器處于溢出狀態(tài)時,
7、只充許其在下面這段代碼中執(zhí)行。 if(errorMode) /進入errormode,只接收規(guī)定字符 if(errorStr.indexOf(c)=-1) reset1(); return; /計算器處于正常狀態(tài)時,下面這段代碼會被執(zhí)行 if ( keys.indexOf(c) != -1 ) / if c an operatorshowOp(c);if ( num ) calc.enterNumber(extractNumber(), c);elsecalc.enterOp(c);reset1(); else if ( nump(c) & nbuf.length() prec ) num =
8、 true;buildNumber(c); private boolean nump(char c) return( c = . | Character.isDigit(c) ); private String extractNumber() return (nbuf.length() = 0) ? 0: nbuf.toString(); private void buildNumber(char c)int i = nbuf.length();if ( i = 0 & c = 0) return; / ignore leading zerosif ( c = . ) / at most on
9、e decimal pointif ( ! before_point ) return;else before_point = false;nbuf.append(c); private void reset1()before_point = true;nbuf.setLength(0);num = false; protected void reset2() count = 0;in = 0;d.setText(hl + in + ht);public void actionPerformed(ActionEvent e) String cmd = e.getActionCommand();
10、 int i=cmd.charAt(0);if (cmd.equals(reset2)reset2();else if (count 13) if (count = 0)in = cmd;elsein += cmd;d.setText(hl + in + ht);count+;enter(char)i); public void doMouseEntered() d.setText(選擇數(shù)字進行運算); public void doMouseExited() d.setText(鼠標不在顯示區(qū)域); protected int count = 0; protected String in =
11、0; protected JLabel d; protected String hl = ; protected String ht = ; private String prompt=Calc: ; private Calculator calc; private String keys; / keys recognized private StringBuffer nbuf; / buffer for input number private String errorStr; /用于記錄在計算器處于溢出狀態(tài)時,充許用戶輸入的符號 private boolean errorMode; /用于
12、記錄計算器當前的狀態(tài),正?;蛞绯鰻顟B(tài) private byte prec; / max no of chars displayable private boolean before_point = true; private boolean num = false;import java.awt.GridLayout;import javax.swing.JFrame;/ RunCalc.java /public class RunCalc public static void main(String args) throws java.io.IOException CalcEng e = n
13、ew CalcEng();CalcFace f = new CalcFace(e.keys(), e.precision();Calculator x = new Calculator(e, f);JFrame win = new JFrame(Calc);win.addWindowListener(new WindowHandler(win);Keypad keypad = new Keypad(f); /此處f 為原Toyface中的lcd/ One column grid, 布局設(shè)置成一列win.setLayout(new GridLayout(0, 1);/ LCD和Keyboard各
14、占一行keypad.setLayout(new GridLayout(4, 4);win.getContentPane().add(f);win.getContentPane().add(keypad);win.pack();win.setVisible(true);return; import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JPanel;class Keypad extends JPanel Keypad(ActionListener f) r7 = new JButto
15、n(A);r7.setVerticalTextPosition(JButton.CENTER);r7.setHorizontalTextPosition(JButton.CENTER);r7.setActionCommand(reset2);/計算機清歸零r7.addActionListener(f);add(r7);r9 = new JButton(N);r9.setVerticalTextPosition(JButton.CENTER);r9.setHorizontalTextPosition(JButton.CENTER);r9.addActionListener(f);add(r9);
16、r1 = new JButton(C);r1.setVerticalTextPosition(JButton.CENTER);r1.setHorizontalTextPosition(JButton.CENTER);r1.setActionCommand(C);r1.addActionListener(f);add(r1);r2 = new JButton(+);r2.setVerticalTextPosition(JButton.CENTER);r2.setHorizontalTextPosition(JButton.CENTER);r2.addActionListener(f);add(r
17、2);r3 = new JButton(-);r3.setVerticalTextPosition(JButton.CENTER);r3.setHorizontalTextPosition(JButton.CENTER);r3.addActionListener(f);add(r3);r4 = new JButton(*);r4.setVerticalTextPosition(JButton.CENTER);r4.setHorizontalTextPosition(JButton.CENTER);r4.addActionListener(f);add(r4);r5 = new JButton(
18、/);r5.setVerticalTextPosition(JButton.CENTER);r5.setHorizontalTextPosition(JButton.CENTER);r5.addActionListener(f);add(r5);r6 = new JButton(=);r6.setVerticalTextPosition(JButton.CENTER);r6.setHorizontalTextPosition(JButton.CENTER);r6.addActionListener(f);add(r6);r8 = new JButton(.);r8.setVerticalTex
19、tPosition(JButton.CENTER);r8.setHorizontalTextPosition(JButton.CENTER);r8.addActionListener(f);add(r8);for (int i = 10; i 0; i-) bi - 1 = new JButton( + (i-1);bi - 1.setVerticalTextPosition(JButton.CENTER);bi - 1.setHorizontalTextPosition(JButton.CENTER);bi - 1.setActionCommand( + (i-1);bi - 1.addActionListener(f);add(bi - 1);protected JButton r7;protected JButton r1;protected JButton r2;protected JButton r3;protected JButton r4;protected JButton r5;protected JButton r6;protected JButton r8;protected JButton r9;protected JButton b = new JButton10;六、聯(lián)系方式(e-mail)