GUI 程序設(shè)計實驗報告
《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è)計 實驗報告 開課實驗室:文俊東606 2013年06月09日 學(xué)院 工商管理學(xué)院
2、年級、專業(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. 由于GUI程序已是消息驅(qū)動的,程序運行后就處于一個循環(huán)中,因此原仿真程序中Calcface中的input()方法以及Calculator中的on()方法就可棄之
3、不用了。 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)
4、 按A后清空歸零 四、實驗感悟 本次實驗相對比較簡單,只需要安排好顯示界面和將兩個合并之后再對一些細節(jié)部分進行修改就可以了。完成實驗后我對顯示界面的布局更加了解了。 五、附錄(自己實現(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)); //注冊事件監(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 //相當于主控模決發(fā)送一個消息給計
8、算器,使其可知道當前計算器對象當前的狀態(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) { //當計算器處于溢出狀態(tài)時,只充許其在下面這段代碼中執(zhí)行。 if(errorMode){ //進入errormode,只接收規(guī)定字符 if(errorStr.indexOf(c)==-1){ reset1(); return; } } //計算器處于正常狀態(tài)時,下面這段代碼會被執(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ù)字進行運算"); } public void doMouseExited() { d.setText("鼠標不在顯示區(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; //用于記錄在計算器處于溢出狀態(tài)時,充許用戶輸入的符號 private boolean errorMode; //用于記錄計算器當前的狀態(tài),正常或溢出狀態(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");//計算機清歸零 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等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重癥醫(yī)學(xué)與多學(xué)科的合作示范課件
- 護理學(xué)基礎(chǔ)02教學(xué)課件下載
- 2016語文S版小學(xué)一年級下冊咕咚教學(xué)課件
- 食品安全與健康課件
- 基于價值鏈的戰(zhàn)略成本管理研究-PDF
- 闌尾炎影像學(xué)
- 阿爾茲海默病的臨床表現(xiàn)、治療和預(yù)防 課件
- 生活的立體圖形2
- 某頒獎晚會策劃案60517
- 胸壁疾病廈門大學(xué)附屬中山醫(yī)院
- 慢性腎臟病的礦物質(zhì)和骨代謝異常描述
- 中考英語專題7連詞復(fù)習(xí)課件
- 全球四大管理咨詢公司培訓(xùn)講義全方位績效管理制度
- 二、摩擦類手法
- 整理-戰(zhàn)略目標與績效管理-10大案例之二.ppt