




已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【實驗名稱】實驗5 Java GUI 【實驗?zāi)康摹?1、學(xué)習(xí)和掌握J(rèn)ava常用的GUI組件。 2、學(xué)習(xí)和掌握J(rèn)ava常用的布局管理器。 3、實習(xí)和掌握J(rèn)ava的事件驅(qū)動程序設(shè)計方法。 4、能夠?qū)崿F(xiàn)簡單的Java GUI。 【實驗步驟(解題過程)】 1、第一步,Java GUI靜態(tài)界面的設(shè)計和實現(xiàn),包括:組件和組件的擺放(布局管理器)。 2、第二步,Java GUI動態(tài)事件處理的設(shè)計與實現(xiàn),需要Java事件驅(qū)動模型。 3、第三步,如果需要實體類支持,則按實驗2的步驟實現(xiàn)實體類并使用。 【實驗內(nèi)容】 1、(移動小球)編寫一個程序,在面板上移動小球。定義一個面板類來顯示小球,并提供想做、向右、向上和向下移動小球的方法。 說明:程序來源編程練習(xí)16.3(P456)??梢圆豢紤]小球移動到邊界外的情況。 【實驗預(yù)習(xí)】1. 問題描述:創(chuàng)建一個界面,通過鼠標(biāo)點擊按鈕實現(xiàn)小球的上下左右移動。2. 輸入;鼠標(biāo)點擊按鈕;處理:通過事件監(jiān)聽,實現(xiàn)圓的重畫;輸出;顯示出移動效果。3. 技術(shù)支持;需要用到事件監(jiān)聽,及圓的繪制即圖形知識,布局管理器等?!靖骄幊檀a】import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MovingBall extends JFrame private static JButton bleft=new JButton(向左);private static JButton bright=new JButton(向右);private static JButton bup=new JButton(向上);private static JButton bdown=new JButton(向下);private CirclePanel canvas = new CirclePanel(); public MovingBall() JPanel panel = new JPanel(); / 將按鈕放入面板中 panel.add(bleft); panel.add(bright); panel.add(bup); panel.add(bdown); this.add(canvas, BorderLayout.CENTER); / 將含有圓的面板放在中央 this.add(panel, BorderLayout.SOUTH); /將含有按鈕的面板放在右邊 /創(chuàng)建按鈕的監(jiān)聽器并注冊到按鈕 bleft.addActionListener(new Listener(); bright.addActionListener(new Listener(); bup.addActionListener(new Listener(); bdown.addActionListener(new Listener(); /主方法 public static void main(String args) JFrame frame = new MovingBall(); frame.setTitle(移動的小球); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(480, 300); frame.setVisible(true); /監(jiān)聽類 class Listener implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(new java.util.Date(e.getWhen(); if (e.getSource() = bleft) canvas.left(); else if (e.getSource() = bright) canvas.right(); else if (e.getSource() =bup) canvas.up(); else if (e.getSource() = bdown) canvas.down(); /含有一個圓的面板的類 class CirclePanel extends JPanel private int x =0; private int y = 0; /左移這個圓 public void left() x-; repaint(); /右移這個圓 public void right() x+; repaint(); /上移這個圓 public void up() y-; repaint(); /下移這個圓 public void down() y+; repaint(); /重畫這個圓 protected void paintComponent(Graphics g) super.paintComponent(g); g.drawOval(getWidth()/2+x,getHeight()/2+y, 10, 10); 【實驗過程及運行結(jié)果】在實驗中遇到的問題是不會畫圓,經(jīng)過查書知道可以使用drawOval方法畫圓。2、(創(chuàng)建一個簡單的計算器)編寫一個程序完成加、減、乘、除操作。 圖5 簡單的計算器 說明:程序來源編程練習(xí)16.4(P456)。文本框組件javax. swing.JTextField,請參見教材17.6小節(jié)(P473),或者Java API文檔。字符串與數(shù)值之間的轉(zhuǎn)換,請參見2.18.1小節(jié)(P44)和9.2.10小節(jié)(P247),或者使用字符串格式化方法9.2.11(P248)。 【實驗預(yù)習(xí)】1. 問題描述:創(chuàng)建一個界面,利用鼠標(biāo)點擊加減乘除按鈕,實現(xiàn)兩個數(shù)之間的運算。2. 輸入:在文本域中輸入兩個數(shù)字,并用鼠標(biāo)點擊按鈕。處理:創(chuàng)建一個監(jiān)聽類,對按鈕進(jìn)行監(jiān)聽,計算兩個數(shù)字之間的運算。輸出:在結(jié)果文本域中顯示運算結(jié)果3. 技術(shù)要求:需要使用布局管理器,事件監(jiān)聽,及字符串與數(shù)字之間的轉(zhuǎn)換等?!靖骄幊檀a】import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class easyCalculation extends JFrameprivate JButton Add=new JButton(加);private JButton Subtract=new JButton(減);private JButton Multiply=new JButton(乘);private JButton Divide=new JButton(除);private JTextField one=new JTextField(5);private JTextField second=new JTextField(5);private JTextField all=new JTextField(10);private JLabel a=new JLabel(第一個數(shù));private JLabel b=new JLabel(第二個數(shù));private JLabel c=new JLabel(結(jié)果);public easyCalculation()FlowLayout panel=new FlowLayout(FlowLayout.CENTER, 20, 50);setLayout(panel); add(a); add(one); add(b); add(second); add(c); add(all); add(Add); add(Subtract); add(Multiply); add(Divide); Add.addActionListener(new Listener(); Subtract.addActionListener(new Listener(); Multiply.addActionListener(new Listener(); Divide.addActionListener(new Listener(); /主方法 public static void main(String args) easyCalculation frame = new easyCalculation(); frame.setTitle(簡單的計算器); frame.setLocationRelativeTo(null); / Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 200); frame.setVisible(true); class Listener implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(new java.util.Date(e.getWhen(); if (e.getSource() = Add) double a1=Double.parseDouble(one.getText(); double b1=Double.parseDouble(second.getText(); all.setText(String.format(%.2f,a1+b1); else if (e.getSource() = Subtract) double a1=Double.parseDouble(one.getText(); double b1=Double.parseDouble(second.getText(); all.setText(String.format(%.2f,a1-b1); else if (e.getSource() = Multiply) double a1=Double.parseDouble(one.getText(); double b1=Double.parseDouble(second.getText(); all.setText(String.format(%.2f,a1*b1); else if (e.getSource() = Divide) double a1=Double.parseDouble(one.getText(); double b1=Double.parseDouble(second.getText(); all.setText(String.format(%.2f,a1/b1); 【實驗過程及運行結(jié)果】在實驗過程中遇到問題是,經(jīng)常忘記添加接口或者繼承。3、(創(chuàng)建一個投資值計算器)編寫一個程序,計算投資值在給定利率以及給定投資年限下的未來值。計算公式參見編程練習(xí)16.5(P456)。當(dāng)用戶點擊Calculate按鈕時在文本域顯示未來的總額。 【實驗預(yù)習(xí)】1. 問題描述:這道題是創(chuàng)建一個GUI窗口,添加組建如圖,通過點擊按鈕,計算未來收益。2. 輸入:在前面三個文本域中分別寫入投資總額,投資年限,年利率。過程:獲取文本域的內(nèi)容,計算未來收益。輸出:將未來收益額顯示在文本域中。3. 技術(shù)支持:用到了GUI基本組件,布局管理器,事件監(jiān)聽等?!靖骄幊檀a】import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class investingCalculator extends JFrame/創(chuàng)建一個名為計算投資質(zhì)的按鈕private JButton calculate=new JButton(計算投資值);/創(chuàng)建投資總額、投資年限、年利率、未來收益值的文本域private JTextField investmentamount=new JTextField();private JTextField year=new JTextField();private JTextField annuallyInterstRate=new JTextField();private JTextField futureValue=new JTextField();investingCalculator()/將標(biāo)簽和文本域放入面板p1中JPanel p1=new JPanel(new GridLayout(5,2);p1.add(new JLabel(投資總額);p1.add(investmentamount);investmentamount.setHorizontalAlignment(SwingConstants.RIGHT);p1.add(new JLabel(投資年限);p1.add(year);year.setHorizontalAlignment(SwingConstants.RIGHT);p1.add(new JLabel(年利率);p1.add(annuallyInterstRate);annuallyInterstRate.setHorizontalAlignment(SwingConstants.RIGHT);p1.add(new JLabel(未來收益值);p1.add(futureValue);futureValue.setHorizontalAlignment(SwingConstants.RIGHT);futureValue.setEditable(false);/將按鈕放在面板p2中JPanel p2=new JPanel(new FlowLayout(FlowLayout.RIGHT);p2.add(calculate);/將面板p1,p2放到框架frame里add(p1,BorderLayout.CENTER);add(p2,BorderLayout.SOUTH);/創(chuàng)建一個監(jiān)聽器并注冊到按鈕calculate.addActionListener(new ActionListener()Override/實現(xiàn)點擊按鈕計算出未來收益并顯示在文本域中public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getSource()=calculate)double amount=Double.parseDouble(investmentamount.getText();double yearlimit=Double.parseDouble(year.getText();double rate=Double.parseDouble(annuallyInterstRate.getText();futureValue.setText(String.format(%.2f, amount*Math.pow(1+rate/1200), yearlimit*12););/主方法public static void main(Stringargs)investingCalculator frame=new investingCalculator();frame.setTitle(投資值計算器);frame.setSize(500,300);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);【實驗過程及運行結(jié)果】遇到問題是不會講未來收益的文本域改為不可編輯。解決方法是應(yīng)該調(diào)用setEditable(false);【思考題】 1、在上述練習(xí)中,你是否使用了匿名內(nèi)部類來實現(xiàn)監(jiān)聽器類?如果是,說明你是如何使用的(可以使用代碼片段)?如果不是,那么使用匿名內(nèi)部類如何實現(xiàn)監(jiān)聽器類呢? 有。calculate.addA
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國FM自動選臺收音機(jī)望遠(yuǎn)鏡數(shù)據(jù)監(jiān)測研究報告
- 2025年中國BOPP鍍鋁膜數(shù)據(jù)監(jiān)測研究報告
- 2025年中國2、5-二甲基苯胺數(shù)據(jù)監(jiān)測報告
- 2025至2030年中國集中操作式電梯井筒模市場分析及競爭策略研究報告
- 2025至2030年中國鋁合金吸頂燈市場分析及競爭策略研究報告
- 2025至2030年中國茴香粉市場分析及競爭策略研究報告
- 2025至2030年中國砼攪拌站市場分析及競爭策略研究報告
- 2025至2030年中國電力控制開關(guān)柜市場分析及競爭策略研究報告
- 2025至2030年中國深溝外球面球軸承市場分析及競爭策略研究報告
- 2025至2030年中國汽車儲液器支架市場分析及競爭策略研究報告
- 初三勵志主題班會:初三第一次班會幻燈片PPT
- GB/T 42910-2023無機(jī)膠粘劑高溫壓縮剪切強(qiáng)度試驗方法
- 2022年江蘇省射陽中等專業(yè)學(xué)校招聘考試真題及答案
- 給攪拌站送石子合同范本
- 2023年副主任醫(yī)師(副高)-學(xué)校衛(wèi)生與兒少衛(wèi)生(副高)考試歷年真題集錦帶答案
- 法律基礎(chǔ)(第4版)PPT完整全套教學(xué)課件
- 倉管應(yīng)聘求職簡歷表格
- 五年級下冊語文期末考試學(xué)霸奪冠解密卷人教部編版含答案
- 房屋加固工程監(jiān)理規(guī)劃
- 一級煙草專賣管理師理論考試題庫(含答案)
- von frey絲K值表完整版
評論
0/150
提交評論