GUI 程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
《GUI 程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《GUI 程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(12頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 廣 州 大 學(xué) 實(shí) 驗(yàn) 報(bào) 告 學(xué) 院 工商管理學(xué)院 專業(yè)、班級(jí) 電子商務(wù) 姓名、學(xué)號(hào) 課程名稱 Java語言程序設(shè)計(jì) 項(xiàng)目名稱 GUI 程序設(shè)計(jì) 實(shí)驗(yàn)時(shí)間:2013年 06月 09日 GUI 程序設(shè)計(jì) 實(shí)驗(yàn)報(bào)告 開課實(shí)驗(yàn)室:文俊東606 2013年06月09日 學(xué)院 工商管理學(xué)院
2、年級(jí)、專業(yè)、班 姓名 成績(jī) 課程 名稱 Java語言程序設(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目 名 稱 GUI 程序設(shè)計(jì) 指導(dǎo)教師 簽名 一、實(shí)驗(yàn)?zāi)康? (1) 掌握GUI 程序設(shè)計(jì)的基本技術(shù); (2) 掌握基本W(wǎng)idget的使用; (3) 掌握通GUI設(shè)計(jì)用戶接口的方法; 二、實(shí)驗(yàn)原理(算法分析(包括流程圖)) 1. CalcFace類按照Lcd類進(jìn)行改造(將兩個(gè)類中的相關(guān)功能合并); 2. 由于GUI程序已是消息驅(qū)動(dòng)的,程序運(yùn)行后就處于一個(gè)循環(huán)中,因此原仿真程序中Calcface中的input()方法以及Calculator中的on()方法就可棄之
3、不用了。 3.改造Toyface,為計(jì)算器界面布局,并將Toyface與Runcale合并使之能與calculator相連。 4. System.out.println需改成向Jlabel對(duì)象輸出的語句 三、實(shí)驗(yàn)過程原始記錄(數(shù)據(jù)、圖表、計(jì)算等) 1.運(yùn)行程序 2.進(jìn)行運(yùn)算 3.計(jì)算器其他按鈕的功能實(shí)現(xiàn) 1)C的功能實(shí)現(xiàn) 按C后計(jì)算機(jī)只錄入9*; 2)N的功能實(shí)現(xiàn) 按N后結(jié)果變成-15 3)A的功能實(shí)現(xiàn)
4、 按A后清空歸零 四、實(shí)驗(yàn)感悟 本次實(shí)驗(yàn)相對(duì)比較簡(jiǎn)單,只需要安排好顯示界面和將兩個(gè)合并之后再對(duì)一些細(xì)節(jié)部分進(jìn)行修改就可以了。完成實(shí)驗(yàn)后我對(duì)顯示界面的布局更加了解了。 五、附錄(自己實(shí)現(xiàn)的源代碼) /////// CalcFace.java /////// import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import javax.swin
5、g.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import 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();
6、errorMode=false; errorStr=""; d = new JLabel(in, JLabel.RIGHT); setBorder(BorderFactory.createCompoundBorder(BorderFactory .createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5, 10, 5, 10))); setLayout(new BorderLayout()); //設(shè)置布管理器 reset2(); add(d);
7、 addMouseListener(new ClickHandler(this)); //注冊(cè)事件監(jiān)聽器 } public void setCalc(Calculator ca){ calc = ca; } public void showNumber(String s) { d.setText(hl+prompt + s+ht); } public void showOp(char op) { } //如果輸入的str為空,則清除errorMode //相當(dāng)于主控模決發(fā)送一個(gè)消息給計(jì)
8、算器,使其可知道當(dāng)前計(jì)算器對(duì)象當(dāng)前的狀態(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; }
9、 private void enter(char c) { //當(dāng)計(jì)算器處于溢出狀態(tài)時(shí),只充許其在下面這段代碼中執(zhí)行。 if(errorMode){ //進(jìn)入errormode,只接收規(guī)定字符 if(errorStr.indexOf(c)==-1){ reset1(); return; } } //計(jì)算器處于正常狀態(tài)時(shí),下面這段代碼會(huì)被執(zhí)行 if ( keys.indexOf(c
10、) != -1 ){ // if c an operator showOp(c); if ( num ) calc.enterNumber(extractNumber(), c); else calc.enterOp(c); reset1(); }else if ( nump(c) && nbuf.length() < prec ) { num = true; buildNumber(c); } } private boolean nump(char c){
11、 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 zeros if (
12、c == '.' ) { // at most one decimal point if ( ! before_point ) return; else before_point = false; } nbuf.append(c); } private void reset1(){ before_point = true; nbuf.setLength(0); num = false; } protected
13、void reset2() { count = 0; in = "0"; d.setText(hl + in + ht); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); int i=cmd.charAt(0); if (cmd.equals("reset2")) reset2(); else if (count < 13) { if (count == 0) in = cmd; else
14、 in += cmd; d.setText(hl + in + ht); count++; } enter((char)i); } public void doMouseEntered() { d.setText("選擇數(shù)字進(jìn)行運(yùn)算"); } public void doMouseExited() { d.setText("鼠標(biāo)不在顯示區(qū)域"); } protected int count = 0; protected String in = "0"; protected JLabel d
15、; protected String hl = "
"; protected String ht = "
"; private String prompt="Calc: "; private Calculator calc; private String keys; // keys recognized private StringBuffer nbuf; // buff16、er for input number private String errorStr; //用于記錄在計(jì)算器處于溢出狀態(tài)時(shí),充許用戶輸入的符號(hào) private boolean errorMode; //用于記錄計(jì)算器當(dāng)前的狀態(tài),正?;蛞绯鰻顟B(tài) private byte prec; // max no of chars displayable private boolean before_point = true; private boolean num = false; } import java
17、.awt.GridLayout; import javax.swing.JFrame; /////// RunCalc.java /////// public class RunCalc { public static void main(String[] args) throws java.io.IOException { CalcEng e = new CalcEng(); CalcFace f = new CalcFace(e.keys(), e.precision()); Calcul
18、ator 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各占一行 keypad.setLayout(new GridLayout
19、(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(ActionLis
20、tener f) { r7 = new JButton("A"); r7.setVerticalTextPosition(JButton.CENTER); r7.setHorizontalTextPosition(JButton.CENTER); r7.setActionCommand("reset2");//計(jì)算機(jī)清歸零 r7.addActionListener(f); add(r7); r9 = new JButton("N"); r9.setVerticalTextPosition(JButton.CENTER); r9.setHor
21、izontalTextPosition(JButton.CENTER); r9.addActionListener(f); add(r9); r1 = new JButton("C"); r1.setVerticalTextPosition(JButton.CENTER); r1.setHorizontalTextPosition(JButton.CENTER); r1.setActionCommand("C"); r1.addActionListener(f); add(r1); r2 = new JButton("+"); r2.
22、setVerticalTextPosition(JButton.CENTER); r2.setHorizontalTextPosition(JButton.CENTER); r2.addActionListener(f); add(r2); r3 = new JButton("-"); r3.setVerticalTextPosition(JButton.CENTER); r3.setHorizontalTextPosition(JButton.CENTER); r3.addActionListener(f); add(r3); r4 =
23、new JButton("*"); r4.setVerticalTextPosition(JButton.CENTER); r4.setHorizontalTextPosition(JButton.CENTER); r4.addActionListener(f); add(r4); r5 = new JButton("/"); r5.setVerticalTextPosition(JButton.CENTER); r5.setHorizontalTextPosition(JButton.CENTER); r5.addActionListener(
24、f); add(r5); r6 = new JButton("="); r6.setVerticalTextPosition(JButton.CENTER); r6.setHorizontalTextPosition(JButton.CENTER); r6.addActionListener(f); add(r6); r8 = new JButton("."); r8.setVerticalTextPosition(JButton.CENTER); r8.setHorizontalTextPosition(JButton.CENTER)
25、; r8.addActionListener(f); add(r8); for (int i = 10; i > 0; i--) { b[i - 1] = new JButton("" + (i-1)); b[i - 1].setVerticalTextPosition(JButton.CENTER); b[i - 1].setHorizontalTextPosition(JButton.CENTER); b[i - 1].setActionCommand("" + (i-1)); b[i - 1].addActionListener(
26、f); add(b[i - 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 JButton[10]; } 六、聯(lián)系方式(e-mail)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案