




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù)四字體設(shè)置窗口程序設(shè)計(jì)單元四:圖形用戶界面程序設(shè)計(jì)教學(xué)目標(biāo)知識(shí)目標(biāo)組合框JComboBox;復(fù)選框JCheckBox;單選按鈕JRadioButton;按鈕組ButtonGroup;列表框Jlist。能力目標(biāo)能會(huì)熟練使用JCombox、JCheckBox、JRadioButton、JList選擇控件構(gòu)造復(fù)雜用戶界面;應(yīng)用選擇事件處理界面事件。教學(xué)內(nèi)容4任務(wù)陳述123知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)拓展任務(wù)實(shí)訓(xùn)5任務(wù)描述:設(shè)計(jì)一個(gè)簡(jiǎn)單的實(shí)現(xiàn)字體設(shè)置窗口程序,可根據(jù)用戶選擇設(shè)置字體的種類、字號(hào)、字形、顏色等屬性。運(yùn)行結(jié)果:1.任務(wù)陳述在Swing組件中,有一些具有選擇功能的組件。將這些組件與if條件語(yǔ)句聯(lián)合使用,可以設(shè)計(jì)出許多界面復(fù)雜、功能強(qiáng)大的程序選擇控件主要包括復(fù)選框、單選按鈕、列表框、組合框,在Java中使用類JCheckbox、JRadioButton、JList、JComboBox來實(shí)現(xiàn)2.知識(shí)準(zhǔn)備組合框(JComboBox)組合框有可編輯的和不可編輯的兩種不同的形式。如果將組合框聲明為可編輯的話,用戶也可以在文本框中直接輸入自己的數(shù)據(jù)。缺省是不可編輯的組合框。組合框用于在多項(xiàng)選擇中選擇一項(xiàng)的操作,用戶只能選擇一個(gè)項(xiàng)目。在未選擇組合框時(shí),組合框顯示為帶按鈕的一個(gè)選項(xiàng)的形式,當(dāng)對(duì)組合框按鍵或單擊時(shí),組合框會(huì)打開可列出多項(xiàng)的一個(gè)列表,提供給用戶選擇。由于組合框占用很少的界面空間,所以當(dāng)項(xiàng)目較多時(shí),一般用它來代替一組單選按鈕。組合框事件可以是ActionEvent事件和ItemEvent事件。事件處理方法與其他處理同類事件的方法類似2.知識(shí)準(zhǔn)備2.知識(shí)準(zhǔn)備方法名方法功能JComboBox()構(gòu)造一個(gè)缺省模式的組合框JComboBox(Object[]items)通過指定數(shù)組構(gòu)造一個(gè)組合框JComboBox(Vectoritems)通過指定向量構(gòu)造一個(gè)組合框JComboBox(ComboBoxModelaModel)通過一個(gè)ComBox模式構(gòu)造一個(gè)組合框intgetItemCount()返回組合框中項(xiàng)目的個(gè)數(shù)intgetSelectedIndex()返回組合框中所選項(xiàng)目的索引ObjectgetSelectedItem()返回組合框中所選項(xiàng)目的值booleanisEditable()檢查組合框是否可編輯voidremoveAllItems()刪除組合框中所有項(xiàng)目voidremoveItem(ObjectanObject)刪除組合框中指定項(xiàng)目voidsetEditable(booleanaFlag)設(shè)置組合框是否可編輯voidsetMaximumRowCount(intcount)設(shè)置組合框顯示的最多行數(shù)2.知識(shí)準(zhǔn)備復(fù)選框(JCheckBox)復(fù)選框是具有開關(guān)或真假狀態(tài)的按鈕單擊復(fù)選框可將其狀態(tài)從“開”更改為“關(guān)”,或從“關(guān)”更改為“開”用戶可在多個(gè)復(fù)選框中選中一個(gè)或者多個(gè)復(fù)選框事件可以是ActionEvent事件和ItemEvent事件。JCheckBox類可實(shí)現(xiàn)ItemListener監(jiān)聽器接口的itemStateChanged()方法來處理事件,用addItemListener()方法注冊(cè)2.知識(shí)準(zhǔn)備方法名方法功能JCheckBox()創(chuàng)建無文本無圖像的初始未選復(fù)選框JCheckBox(Iconicon)創(chuàng)建有圖像無文本的初始未選復(fù)選框
JCheckBox(Iconicon,booleanselected)創(chuàng)建帶圖像和選擇狀態(tài)但無文本的復(fù)選框JCheckBox(Stringtext)創(chuàng)建帶文本的初始未選復(fù)選框JCheckBox(Stringtext,booleanselected)創(chuàng)建具有指定文本和狀態(tài)的復(fù)選框JCheckBox(Stringtext,Iconicon)創(chuàng)建具有指定文本和圖標(biāo)圖像的初始未選復(fù)選框按鈕JCheckBox(Stringtext,Iconicon,booleanselected)創(chuàng)建具有指定文本、圖標(biāo)圖像、選擇狀態(tài)的復(fù)選框按鈕StringgetLabel()獲得復(fù)選框標(biāo)簽booleangetState()確定復(fù)選框的狀態(tài)voidsetLabel(Stringlabel)將復(fù)選框的標(biāo)簽設(shè)置為字符串參數(shù)voidsetState(booleanstate)將復(fù)選框狀態(tài)設(shè)置為指定狀態(tài)單選按鈕(JRadioButton)單選按鈕可以讓用戶進(jìn)行選擇和取消選擇,與復(fù)選框不同,每次只能選擇單選按鈕組中的一個(gè)JRadioButton類本身不具有同一時(shí)間內(nèi)只有一個(gè)單選按鈕對(duì)象被選中的性質(zhì),也就是說JRadioButton類的每個(gè)對(duì)象都是獨(dú)立,不因其他對(duì)象狀態(tài)的改變而改變。必須使用ButtonGroup類將所需的JRadioButton類對(duì)象構(gòu)成一組,使得同一時(shí)間內(nèi)只有一個(gè)單選按鈕對(duì)象被選中。只要通過調(diào)用ButtonGroup類對(duì)象add()方法,將所有JRadioButton類對(duì)象添加到ButtonGroup類對(duì)象中即可實(shí)現(xiàn)多選一ButtonGroup類只是一個(gè)邏輯上的容器,它并不在GUI中表現(xiàn)出來單選按鈕的選擇事件是ActionEvent類事件2.知識(shí)準(zhǔn)備2.知識(shí)準(zhǔn)備方法名方法功能JRadioButton()使用空字符串標(biāo)簽創(chuàng)建一個(gè)單選按鈕(沒有圖像、未選定)JRadioButton(Iconicon)使用圖標(biāo)創(chuàng)建一個(gè)單選按鈕(沒有文字、未選定)JRadioButton(Iconicon,booleanselected)使用圖標(biāo)創(chuàng)建一個(gè)指定狀態(tài)的單選按鈕(沒有文字)JRadioButton(Stringtext)使用字符串創(chuàng)建一個(gè)單選按鈕(未選定)JRadioButton(Stringtext,booleanselected)使用字符串創(chuàng)建一個(gè)單選按鈕JRadioButton(Stringtext,Iconicon)使用字符串和圖標(biāo)創(chuàng)建一個(gè)單選按鈕(未選定)JRadioButton(Stringtext,Iconicon,booleanselected)使用字符串創(chuàng)建一個(gè)單選按鈕列表框(JList)列表框是允許用戶從一個(gè)列表中選擇一項(xiàng)或多項(xiàng)的組件。顯示一個(gè)數(shù)組和向量的表是很容易的。列表框使用戶易于操作大量的選項(xiàng)。列表框的所有項(xiàng)目都是可見的,如果選項(xiàng)很多,超出了列表框可見區(qū)的范圍,則列表框的旁邊會(huì)有一個(gè)滾動(dòng)條。列表框事件可以是ListSelectionEvent事件和ItemEvent事件2.知識(shí)準(zhǔn)備2.知識(shí)準(zhǔn)備方法名方法功能JList()構(gòu)造一個(gè)空的滾動(dòng)列表JList(Object[]listData)通過一個(gè)指定對(duì)象數(shù)組構(gòu)造一個(gè)列表JList(ListModeldataModel)通過列表元素構(gòu)造一個(gè)列表JList(VectorlistData)通過一個(gè)向量構(gòu)造一個(gè)列表,是默認(rèn)的選擇方式intgetSelectedIndex()獲取列表中選中項(xiàng)的索引int[]getSelectedIndexes()獲取列表中選中的索引數(shù)組ObjectgetSelectedValue()獲取列表中選擇的值Object[]getSelectedValues()獲取列表中選擇的多個(gè)值voidsetSelectionMode(intselectionMode)設(shè)置選擇模式voidsetVisibleRowCount(intvisibleRowCount)設(shè)置不帶滾動(dòng)條時(shí)顯示的行數(shù)選擇事件(ItemEvent)在JavaGUI中,當(dāng)進(jìn)行選擇性的操作,如單擊復(fù)選框或列表項(xiàng)時(shí),或者當(dāng)一個(gè)選擇框或一個(gè)可選菜單的項(xiàng)被選擇或取消時(shí)生成選項(xiàng)事件。選中其中一項(xiàng)或取消其中一項(xiàng)都會(huì)觸發(fā)相應(yīng)的選項(xiàng)事件。觸發(fā)選項(xiàng)事件的組件比較多,如JComboBox、JCheckBox、JRadioButton組件。用戶在下拉列表、復(fù)選框和單選按鈕中,選擇一項(xiàng)或取消一項(xiàng),都會(huì)觸發(fā)選項(xiàng)事件ItemEvent。當(dāng)用戶單擊某個(gè)JRadioButton類對(duì)象時(shí),可以產(chǎn)生一個(gè)ActionEven和一個(gè)或者兩個(gè)ItemEvent(一個(gè)來自被選中的對(duì)象,另一個(gè)來自之前被選中現(xiàn)在未選中的對(duì)象)2.知識(shí)準(zhǔn)備選擇事件(ItemEvent)JRadioButton類可以同時(shí)響應(yīng)ItemEvent和ActionEvent大多數(shù)的情況下,只需要處理被用戶單擊選中的對(duì)象,所以使用ActionEvent來處理JRadioButton類對(duì)象的事件當(dāng)用戶單擊某個(gè)JCheckBox類對(duì)象時(shí),也可以產(chǎn)生一個(gè)ItemEvent和一個(gè)ActionEvent大多數(shù)的情況下,需要判斷JCheckBox類對(duì)象是否被選中,所以經(jīng)常使用ItemEvent來處理JCheckBox類的事件ItemEvent類的處理過程:當(dāng)用戶改變一個(gè)組件的狀態(tài)時(shí),會(huì)產(chǎn)生一個(gè)或多個(gè)ItemEven類事件。2.知識(shí)準(zhǔn)備選擇事件(ItemEvent)處理步驟使用“importjava.awt.event.*;”語(yǔ)句導(dǎo)入java.awt.event包中的所有類給程序的主類添加ItemListener接口將需要監(jiān)聽的組件注冊(cè),其格式為:對(duì)象名.addItemListener(this);在itemStateChanged()方法中編寫具體處理該事件的方法,其格式為:
publicvoiditemStateChanged(ItemEvente){}2.知識(shí)準(zhǔn)備在itemStateChanged()方法中,經(jīng)常使用下面3種方法來判斷對(duì)象當(dāng)前的狀態(tài):方法一:getItem()方法返回因?yàn)槭录漠a(chǎn)生而改變狀態(tài)的對(duì)象,類型為Object。通過if語(yǔ)句將getItem()依次與所有能改變狀態(tài)的對(duì)象進(jìn)行比較,就可以確定用戶到底是哪一個(gè)對(duì)象因?yàn)槭录漠a(chǎn)生而改變了狀態(tài)。2.知識(shí)準(zhǔn)備方法二:
getItemSelectable()方法返回產(chǎn)生事件的對(duì)象,其返回類型為Object。通過if語(yǔ)句將getItemSelectable()依次與所有能產(chǎn)生事件的對(duì)象進(jìn)行比較,就可以確定用戶單擊的是哪一個(gè)對(duì)象。getItemSelectable()方法的作用與getSource()方法的作用完全一樣。方法三:
getStateChange()方法返回產(chǎn)生事件對(duì)象的當(dāng)前狀態(tài),其返回值有兩個(gè),ItemEventSELECTED和ItemEvent.DESELECTED。ItemEvent.SELECTED表示對(duì)象當(dāng)前為選中,ItemEvent.DESELECTED表示對(duì)象當(dāng)前未選中。2.知識(shí)準(zhǔn)備界面中的字體顏色單選項(xiàng)和字形復(fù)選框分別通過JRadioButton和JCheckBox類進(jìn)行創(chuàng)建并實(shí)現(xiàn),字號(hào)選擇通過JList類實(shí)現(xiàn),字體選擇通過JComboBox類實(shí)現(xiàn)。
布局通過盒式布局嵌套實(shí)現(xiàn),兩個(gè)水平的盒子放在一個(gè)垂直的盒子里。上面水平的盒子里放JComboBox、JList、JCheckBox、JRadioButton對(duì)象,下面水平盒子里放文本區(qū)JTextArea對(duì)象和按鈕對(duì)象。同時(shí)實(shí)現(xiàn)ItemListener和ActionListener接口,處理按鈕點(diǎn)擊和選擇控件的事件。定義類FontSet繼承JFrame實(shí)現(xiàn)ItemListener,ActionListener接口通過JComboBox、JCheckBox、JradioButton等對(duì)象實(shí)現(xiàn)GUI界面設(shè)計(jì)為組件添加監(jiān)聽器為ItemListener和ActionListener接口添加事件處理代碼編寫main方法測(cè)試程序3.任務(wù)實(shí)施 3.任務(wù)實(shí)施導(dǎo)入所用的包:importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;定義窗口類:publicclassFontSetextendsJFrameimplementsItemListener,ActionListener{} 3.任務(wù)實(shí)施定義字體顏色單選按鈕對(duì)象和按鈕組對(duì)象:
JRadioButtonjrbRed=newJRadioButton("紅色",true); JRadioButtonjrbGreen=newJRadioButton("綠色"); JRadioButtonjrbBlue=newJRadioButton("藍(lán)色");
privateButtonGroupbg=newButtonGroup();定義字形復(fù)選按鈕對(duì)象:
JCheckBoxjcb1=newJCheckBox("加粗"); JCheckBoxjcb2=newJCheckBox("傾斜");
3.任務(wù)實(shí)施定義字體下拉列表對(duì)象、字號(hào)列表對(duì)象:JComboBoxlistFont;JListlistSize;JTextAreataDemo; //顯示樣例文字的文本區(qū)JButtonbtnExit,btnEdit; //退出和編輯按鈕定義構(gòu)造方法FontSet()GraphicsEnvironmentg=/*獲取所有可用字體*/GraphicsEnvironment.getLocalGraphicsEnvironment();StringfontName[]=g.getAvailableFontFamilyNames(); 3.任務(wù)實(shí)施添加字體選擇下拉列表:
BoxboxV1=Box.createVerticalBox(); boxV1.add(newJLabel("請(qǐng)選擇字體")); listFont=newJComboBox(fontName); boxV1.add(newJScrollPane(listFont)); boxV1.add(Box.createVerticalStrut(155)); 3.任務(wù)實(shí)施添加字號(hào)選擇列表:
BoxboxV2=Box.createVerticalBox(); boxV2.add(newJLabel("請(qǐng)選擇字號(hào)")); StringstrSize[]=newString[30]; for(inti=0;i<30;i++){ strSize[i]=""+(i+16); } listSize=newJList(strSize); boxV2.add(newJScrollPane(listSize)); 3.任務(wù)實(shí)施添加字形選擇復(fù)選按鈕:
BoxboxV3=Box.createVerticalBox(); boxV3.add(newJLabel("請(qǐng)選擇字形")); boxV3.add(jcb1); boxV3.add(jcb2); boxV3.add(Box.createVerticalGlue()); 3.任務(wù)實(shí)施添加顏色選擇單選按鈕組:
BoxboxV4=Box.createVerticalBox(); boxV4.add(newJLabel("請(qǐng)選擇字色")); boxV4.add(jrbRed); boxV4.add(jrbGreen); boxV4.add(jrbBlue); boxV4.add(Box.createVerticalGlue()); bg.add(jrbRed);bg.add(jrbGreen);bg.add(jrbBlue); 3.任務(wù)實(shí)施將4個(gè)垂直盒子放入一個(gè)水平盒子:
BoxboxH1=Box.createHorizontalBox(); boxH1.add(boxV1); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV2); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV3); boxH1.add(Box.createHorizontalStrut(15)); boxH1.add(boxV4); 3.任務(wù)實(shí)施將文本區(qū)對(duì)象放入第二個(gè)水平盒子:
BoxboxH2=Box.createHorizontalBox(); taDemo=newJTextArea("這是字體設(shè)置的測(cè)試文字",5,20); boxH2.add(taDemo); 3.任務(wù)實(shí)施將兩個(gè)按鈕放入垂直盒子后再放入水平盒子二:BoxboxV5=Box.createVerticalBox(); btnExit=newJButton("退出"); btnEdit=newJButton("編輯"); boxV5.add(btnExit); boxV5.add(btnEdit); boxH2.add(boxV5); btnExit.addActionListener(this); btnEdit.addActionListener(this); 3.任務(wù)實(shí)施將兩個(gè)水平盒子放入一個(gè)垂直盒子再添加到窗口中去:BoxbaseBox=Box.createVerticalBox();baseBox.add(boxH1);baseBox.add(boxH2);baseBox.add(boxH2); Containercon=getContentPane();con.setLayout(newFlowLayout());con.add(baseBox); 3.任務(wù)實(shí)施設(shè)置窗口的標(biāo)題、大小位置、可見性和關(guān)閉后的操作:setTitle("字體設(shè)置器");setBounds(150,150,550,380);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3.任務(wù)實(shí)施按鈕點(diǎn)擊處理actionPerformed方法:如果點(diǎn)擊退出按鈕,窗口關(guān)閉if(e.getSource()==btnExit){ dispose();}如果選擇編輯按鈕,獲取用戶選擇的字體、字形elseif(e.getSource()==btnEdit){ intstyle=Font.PLAIN; if(jcb1.isSelected()) style|=Font.BOLD; if(jcb2.isSelected()) style|=Font.ITALIC;
3.任務(wù)實(shí)施按鈕點(diǎn)擊處理actionPerformed方法:獲取用戶選擇的顏色if(jrbRed.isSelected())taDemo.setForeground(Color.RED);if(jrbGreen.isSelected())taDemo.setForeground(Color.GREEN);if(jrbBlue.isSelected())taDemo.setForeground(Color.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TCZSYSJLXH 002-2024 全國(guó)藝術(shù)行業(yè)職業(yè)能力水平評(píng)價(jià)團(tuán)體標(biāo)準(zhǔn)
- 太原單柱式標(biāo)志桿施工方案
- 吉安市防水補(bǔ)漏施工方案
- 浦東新區(qū)2024學(xué)年度第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)高三語(yǔ)文試卷
- 生態(tài)茶園修復(fù)工程施工方案
- 建筑工程竣工驗(yàn)收檢測(cè)報(bào)告
- 右安門鋼結(jié)構(gòu)施工方案
- 簡(jiǎn)支鋼箱梁橋施工方案
- 酉陽(yáng)四星級(jí)酒店施工方案
- 陶鋁吸音板施工方案
- 中國(guó)女排演講ppt
- GB/T 12928-2008船用中低壓活塞空氣壓縮機(jī)
- 沖壓工藝及沖壓質(zhì)量
- PS 第7章-路徑和矢量圖形課件
- 立體構(gòu)成-線立體課件
- 住院總崗位職責(zé)
- 眼科常用藥課件
- 中藥封包療法課件
- 初中體育與健康人教7~9年級(jí)第7章 球類正面雙手墊球教學(xué)設(shè)計(jì)及教案
- 展示空間設(shè)計(jì)(案例)
- 急癥手術(shù)預(yù)見性護(hù)理
評(píng)論
0/150
提交評(píng)論