版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 HappyChat用戶注冊(cè)程序,學(xué)習(xí)目的與要求: 深刻理解注冊(cè)程序的分析和設(shè)計(jì) 熟練使用JCombox組件、JCheckBox組件和JRadioButton組件構(gòu)造復(fù)雜用戶界面 熟練使用JOptionPane改善與用戶的交互 熟練設(shè)計(jì)注冊(cè)程序并進(jìn)行事件處理,8.1 HappyChat注冊(cè)程序分析 8.2 JComboBox、JCheckBox和JRadioButton 8.3 JOptionPane類 8.4 注冊(cè)邏輯實(shí)現(xiàn) 8.5 本章小結(jié) 8.6 上機(jī)實(shí)訓(xùn),第8章 HappyChat用戶注冊(cè)程序,界面分析,8.1 HappyChat注冊(cè)程序分析,圖8.1 注冊(cè)程序界面,程序邏輯分析
2、HappyChat注冊(cè)程序主要包括三個(gè)方面的功能 用戶填寫(xiě)注冊(cè)信息后,點(diǎn)擊【確定】按鈕,首先要客戶端進(jìn)行數(shù)據(jù)校驗(yàn)的工以檢查用戶所填寫(xiě)信息是否符合要求,然后通過(guò)網(wǎng)絡(luò)向服務(wù)器發(fā)送注冊(cè)請(qǐng)求,服務(wù)器處理后,將注冊(cè)是否成功的消息返回給客戶端??蛻舳说臄?shù)據(jù)校驗(yàn)包括以下幾個(gè)方面: 用戶名不能為空。 兩次密碼應(yīng)一致。 年齡必須為合法年齡。 電子郵件必須為合法電子郵件格式,用戶注冊(cè)完成或注冊(cè)過(guò)程中,點(diǎn)擊【返回】按鈕,可以返回到用戶登錄窗口以進(jìn)行登錄特殊容器 用戶在填寫(xiě)注冊(cè)信息過(guò)程中,點(diǎn)擊【清空】按鈕,可以將填寫(xiě)的信息清空恢復(fù)到初始狀態(tài) 根據(jù)以上分析,在編寫(xiě)HappyChat注冊(cè)程序時(shí)需要用到單選鈕(JRadio
3、Button)、組合框(JCombox)和對(duì)話框(JOpstionPane)等組件,并且需要對(duì)【確定】、【返回】和【清空】按鈕進(jìn)行事件處理,JComboBox類 ComboBox只允許選擇單個(gè)元素,使用JComboBox類來(lái)表示組合框架控件。 創(chuàng)建組合框類似于創(chuàng)建列表框。 缺省情況下,組合框是不可編輯的,用戶只能選擇一個(gè)項(xiàng)目。 如果將組合框聲明為可編輯的話,用戶也可以在文本框中直接輸入自己的數(shù)據(jù)。 組合框的構(gòu)造方法和常用方法如表8.2所示。,8.2 J ComboBox、JCheckBox和JRadioButton,表8.2 JComboBox類構(gòu)造方法和常用方法,JCheckBox類 復(fù)選框
4、(JCheckbox)是一個(gè)可處于“開(kāi)”(true) 或“關(guān)”(false) 狀態(tài)的圖形組件。 單擊復(fù)選框可將其狀態(tài)從“開(kāi)”更改為“關(guān)”,或從“關(guān)”更改為“開(kāi)”。 【例8-2】復(fù)選框應(yīng)用 /復(fù)選框應(yīng)用演示程序 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CheckBoxDemo extends JPanel implements ItemListener JCheckBox chkComputer,chkArtist,chkHistory,chkHuman; JLabel lblI
5、nfo,lblInterest; static JFrame frmMain; public CheckBoxDemo(), super(new GridLayout(3,2); chkComputer=new JCheckBox(計(jì)算機(jī)); chkComputer.addItemListener(this); chkArtist=new JCheckBox(藝術(shù)); chkArtist.addItemListener(this); chkHistory=new JCheckBox(歷史); chkHistory.addItemListener(this); chkHuman=new JChe
6、ckBox(文學(xué)); chkHuman.addItemListener(this); lblInfo=new JLabel(您選擇的是:); lblInterest=new JLabel(); lblInterest.setForeground(Color.BLUE); add(chkComputer); add(chkArtist); add(chkHistory); add(chkHuman); add(lblInfo); add(lblInterest); ,public void itemStateChanged(ItemEvent ie) String strComputer=(ch
7、kComputer.isSelected()?chkComputer.getText():); String strArtist=(chkArtist.isSelected()?chkArtist.getText():); String strHistory=(chkHistory.isSelected()?chkHistory.getText():); String strHuman; if (chkHuman.isSelected() strHuman=chkHuman.getText(); else strHuman=; lblInterest.setText(strComputer+s
8、trArtist+strHistory+strHuman); public static void main(String args) frmMain=new JFrame(復(fù)選框組件演示); CheckBoxDemo cbd=new CheckBoxDemo(); cbd.setBorder(BorderFactory.createTitledBorder(請(qǐng)選擇興趣愛(ài)好); frmMain.setContentPane(cbd); frmMain.setSize(250,150); frmMain.setVisible(true); ,JRadioButton類,表8.4 JRadioBu
9、tton類構(gòu)造方法和常用方法,組件綜合應(yīng)用實(shí)例 【例8-4】字體設(shè)置器 /JCheckBox、JComboBox、JList和JRadioButton綜合使用演示程序 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class FontSetDemo extends JFrame implements ActionListener,ItemListener JPanel pnlMain; JLabel lblSize,lblType,lblT
10、est; JRadioButton rbtnRed,rbtnGreen; JCheckBox chkBold,chkItalic; JButton btnExit; ButtonGroup grpColor; List lstSize; JComboBox cmbType;,String strType=宋體,隸書(shū),楷體_GB2312,仿宋_GB2312; public FontSetDemo() super(字體設(shè)置器); lblType=new JLabel(請(qǐng)選擇字體); lblSize=new JLabel(請(qǐng)選擇字形); lstSize=new List(); lstSize.add
11、ItemListener(this); for (int i=10;i30;i+=2) lstSize.add(String.valueOf(i); lstSize.select(0); cmbType=new JComboBox(strType); cmbType.addItemListener(this); cmbType.setSelectedIndex(0); grpColor=new ButtonGroup(); rbtnRed=new JRadioButton(紅色); grpColor.add(rbtnRed); rbtnRed.setSelected(true); rbtnRe
12、d.addItemListener(this); rbtnGreen=new JRadioButton(綠色);,grpColor.add(rbtnGreen); rbtnGreen.addItemListener(this); chkBold=new JCheckBox(加粗); chkBold.addItemListener(this); chkItalic=new JCheckBox(傾鈄); chkItalic.addItemListener(this); lblTest=new JLabel(這是字體設(shè)置的測(cè)試文字); lblTest.setBorder(BorderFactory.
13、createBevelBorder(1); btnExit=new JButton(退出); btnExit.addActionListener(this); pnlMain=new JPanel(null); lblType.setBounds(5,0,80,30); cmbType.setBounds(5,30,80,30); lblSize.setBounds(100,0,80,30); lstSize.setBounds(100,30,80,60); rbtnRed.setBounds(185,5,60,30); rbtnGreen.setBounds(245,5,60,30); ch
14、kBold.setBounds(185,35,60,30); chkItalic.setBounds(245,35,60,30);,lblTest.setBounds(10,100,270,60); pnlMain.add(lblType); pnlMain.add(cmbType); pnlMain.add(lblSize); pnlMain.add(lstSize); pnlMain.add(rbtnRed); pnlMain.add(rbtnGreen); pnlMain.add(chkBold); pnlMain.add(chkItalic); pnlMain.add(lblTest)
15、; pnlMain.add(btnExit); this.setContentPane(pnlMain); setSize(300,200); setVisible(true); public void actionPerformed(ActionEvent evt) if (evt.getSource()=btnExit) System.exit(0); ,public void itemStateChanged(ItemEvent evt) if (evt.getSource()=rbtnRed) lblTest.setForeground(Color.RED); if (evt.getS
16、ource()=rbtnGreen) lblTest.setForeground(Color.GREEN); int intBold=(chkBold.isSelected()?Font.BOLD:Font.PLAIN); int intItalic=(chkItalic.isSelected()?Font.ITALIC:Font.PLAIN); int intSize=Integer.parseInt(String)lstSize.getSelectedItem(); String strType=(String)cmbType.getSelectedItem(); lblTest.setF
17、ont(new Font(strType,intBold+intItalic,intSize); public static void main(String args) new FontSetDemo(); ,概述 簡(jiǎn)單的對(duì)話框可以使用JSwing中的JOptionPane類來(lái)實(shí)現(xiàn),其中包含了許多方法,這些方法都是showXXXDialog格式,使用不同的方法可以得到不同類型的對(duì)話框。這些方法如表8.5所示。 同時(shí)JOptionPane中有許多的參數(shù),其中messageType用來(lái)定義信息類型,可以使用的常量如表8.5所示; optionType用來(lái)定義在對(duì)話框上的操作按鈕,可以使用的常量如
18、表8.6所示。當(dāng)用戶單擊對(duì)話框上的按鈕后,將返回一個(gè)整數(shù),返回值常量如表8.6所示。,8.3 JOptionPane類,表8.5 對(duì)話框類型和信息類型,表8.6 操作按鈕類型和返回值類型,對(duì)話框程序應(yīng)用實(shí)例 【例8-5】對(duì)話框程序演示 /對(duì)話框應(yīng)用演示程序 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class OptionPaneDemo extends JFrame implements ItemListener JRadioButton rbtnError,rbtnInterMess,r
19、btnWarn,rbtnSelect; JPanel pnlMain; ButtonGroup bgMain; public OptionPaneDemo() pnlMain=new JPanel(new GridLayout(5,1); getContentPane().add(pnlMain); rbtnError=new JRadioButton(錯(cuò)誤對(duì)話框); rbtnError.setSelected(true); rbtnInterMess=new JRadioButton(內(nèi)部信息對(duì)話框);,bgMain=new ButtonGroup(); bgMain.add(rbtnErr
20、or); bgMain.add(rbtnInterMess); bgMain.add(rbtnSelect); bgMain.add(rbtnWarn); rbtnError.addItemListener(this); rbtnInterMess.addItemListener(this); rbtnSelect.addItemListener(this); rbtnWarn.addItemListener(this); pnlMain.add(rbtnError); pnlMain.add(rbtnInterMess); pnlMain.add(rbtnSelect); pnlMain.a
21、dd(rbtnWarn); setTitle(對(duì)話框演示); setSize(250,150); setVisible(true); public void itemStateChanged(ItemEvent ie) if (rbtnError.isSelected(),JOptionPane.showMessageDialog(null,程序錯(cuò)誤, 錯(cuò)誤, JOptionPane.ERROR_MESSAGE); if (rbtnInterMess.isSelected() JOptionPane.showConfirmDialog(null,請(qǐng)選擇一個(gè), 選擇, JOptionPane.Y
22、ES_NO_OPTION); if (rbtnWarn.isSelected() Object options = 確定, 取消 ; JOptionPane.showOptionDialog(null, 點(diǎn)擊確定繼續(xù), 警告, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, options, options0); if (rbtnSelect.isSelected() Object possibleValues = 劉津, 劉志成, 王詠梅 ; Object selectedValue = JOptionPane.sh
23、owInputDialog(null, 選擇一個(gè), 輸入,JOptionPane.INFORMATION_MESSAGE, null,possibleValues, possibleValues0);,JOptionPane.showMessageDialog(null,您的選擇是:+selectedValue.toString(); public static void main(String args) new OptionPaneDemo(); ,【注冊(cè)】按鈕處理 當(dāng)用戶填寫(xiě)好注冊(cè)信息,點(diǎn)擊【注冊(cè)】按鈕時(shí),注冊(cè)程序通過(guò)register()方法進(jìn)行注冊(cè)處理,register()方法的詳細(xì)代
24、碼如下。 public void register() Register_Customer data=new Register_Customer(); data.custName = txtUserName.getText(); data.custPassword = pwdUserPassword.getText(); data.age = txtAge.getText(); data.sex = rbtnMale.isSelected()?男:女; data.email = txtEmail.getText(); if(data.custName.length()=0) JOptionPa
25、ne.showMessageDialog(null,用戶名不能為空); return; if(data.custPassword.length()=0),8.4 注冊(cè)邏輯實(shí)現(xiàn), JOptionPane.showMessageDialog(null,密碼不能為空); return; if(!data.custPassword.equals(pwdConfirmPass.getText() JOptionPane.showMessageDialog(null,密碼兩次輸入不一致,請(qǐng)重新輸入); return; if(data.age.length()=0) JOptionPane.showMessageDialog(null,年齡不能為空); return; int age=Integer.parseInt(txtAge.getText(); if (age100) JOptionPane.showMessageDialog(null,年齡輸入不合法); return; int Found_flag=0; /判斷標(biāo)志 for (int i=0;idata.email.length();i+), if(data.email.charAt(i)=) Found_flag+; if(Found_flag!=1) JOptionPane.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件質(zhì)量保證流程
- 工業(yè)智能制造技術(shù)實(shí)踐指南
- 2026年文學(xué)鑒賞與文學(xué)理論考試題集
- 2026年移動(dòng)支付呼叫中心業(yè)務(wù)測(cè)試題
- 2026年行政事業(yè)單位移民業(yè)務(wù)考試題目
- 胃炎患者的日常飲食管理
- 2026年一級(jí)建造師考試實(shí)務(wù)科目試題解析
- 2026年全民健身運(yùn)動(dòng)會(huì)測(cè)試卷身體素質(zhì)鍛煉題型
- 2026年交通運(yùn)輸崗位應(yīng)聘考核題及解答參考
- 2026年國(guó)際關(guān)系專業(yè)綜合知識(shí)模擬題
- 2025大模型安全白皮書(shū)
- 2026國(guó)家國(guó)防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫(kù)及1套參考答案詳解
- 工程款糾紛專用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長(zhǎng)江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫(kù)及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國(guó)心臟病協(xié)會(huì)心肺復(fù)蘇和心血管急救指南(中文完整版)
- (2025年)教育博士(EdD)教育領(lǐng)導(dǎo)與管理方向考試真題附答案
- 1、湖南大學(xué)本科生畢業(yè)論文撰寫(xiě)規(guī)范(大文類)
- 基于多源數(shù)據(jù)融合的深圳市手足口病時(shí)空傳播模擬與風(fēng)險(xiǎn)預(yù)測(cè)模型構(gòu)建及應(yīng)用
- 咯血的急救及護(hù)理
評(píng)論
0/150
提交評(píng)論