




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章常用組件
Swing概述javax.Swing定義了相對(duì)于java.awt包更多、更強(qiáng)的功能。事件響應(yīng)原理
設(shè)計(jì)和實(shí)現(xiàn)圖形用戶界面的工作主要有兩個(gè):1.創(chuàng)建組成界面的各種成分和元素2.定義圖形用戶界面的事件和各界面元素對(duì)不同事件的響應(yīng)
事件響應(yīng)原理
事件驅(qū)動(dòng)機(jī)制--委托事件模型
將事件的處理委托給獨(dú)立的對(duì)象,而不是組件本身,從而將使用者界面與程序邏輯分開(kāi)
由產(chǎn)生事件的對(duì)象(事件源)、事件對(duì)象以及監(jiān)聽(tīng)者對(duì)象所組成。產(chǎn)生事件的對(duì)象會(huì)在事件產(chǎn)生時(shí),將與該事件相關(guān)的信息封裝在一個(gè)稱之為“事件對(duì)象”的對(duì)象中,監(jiān)聽(tīng)者對(duì)象根據(jù)該事件對(duì)象內(nèi)的信息決定適當(dāng)?shù)奶幚矸绞?。?duì)應(yīng)不同事件需要不同的事件監(jiān)聽(tīng)者
JLable組件標(biāo)簽只起信息說(shuō)明的作用,而不接受用戶的輸入,也無(wú)事件響應(yīng)。構(gòu)造方法
JLable()JLable(Iconicon)JLable(Iconicon,inthalig)排列方式(LEFT、CENTER、RIGHT、LEADING和TRAILING)JLable(Stringtext)JLable(Stringtext,inthalig)JLable(Stringtext,Iconicon,inthalig)常用方法IcongetIcon()voidsetIcon(Iconicon)StringgetText()voidsetText(Stringlable)JButton組件和JToggleButton組件
Swing組件中的按鈕的特殊效果
(1)改變按鈕的圖標(biāo),即一個(gè)按鈕可以有多個(gè)圖標(biāo),可根據(jù)Swing按鈕所處的狀態(tài)而自動(dòng)變換不同的圖標(biāo)。(2)為按鈕加入提示,即當(dāng)鼠標(biāo)在按鈕上稍做停留時(shí),在按鈕邊可出現(xiàn)提示,當(dāng)鼠標(biāo)移出按鈕時(shí),提示自動(dòng)消失。(3)在按鈕上設(shè)置快捷鍵。(4)設(shè)置默認(rèn)按鈕,即通過(guò)回車鍵運(yùn)行此按鈕的功能。JToggleButton按鈕與JButton按鈕的區(qū)別僅在于:當(dāng)按下JButton按鈕并釋放鼠標(biāo)后,按鈕會(huì)自動(dòng)彈起;而按下JToggleButton按鈕并釋放鼠標(biāo)后,按鈕不會(huì)自動(dòng)彈起,除非再按一次。
JButton類的構(gòu)造方法
JButton()JButton(Stringtext)JButton(Iconicon)JButton(Stringtext,Iconicon)JToggleButton類的構(gòu)造方法JToggleButton()JToggleButton(Stringtext)JToggleButton(Stringtext,booleanselected)JToggleButton(Iconicon)JToggleButton(Iconicon,booleanselected)JToggleButton(Stringtext,Iconicon)JToggleButton(Stringtext,Iconicon,booleanselected)
成員方法
IcongetIcon()voidsetIcon(Iconicon)StringgetLabel()voidsetLabel(Stringlable)addActionListener(ActionListenerI)setPressedIcon(Iconpricon)設(shè)置按鈕按下時(shí)的圖標(biāo)voidsetRolloverIcon(Iconroicon)設(shè)置鼠標(biāo)經(jīng)過(guò)時(shí)按鈕的圖標(biāo)setEnabled(booleanb)設(shè)定按鈕是否禁用voidsetSelected(booleanb)設(shè)置按鈕的狀態(tài)voidsetText(Stringtext)設(shè)置按鈕的文本booleanisSelected()獲取按鈕狀態(tài)IconActionEventActionEvent類包含在AWT包中觸發(fā)這個(gè)事件的動(dòng)作包括:?jiǎn)螕舭粹o;雙擊一個(gè)列表中的選項(xiàng);選擇菜單項(xiàng);在文本框中輸入回車等
ActionEvent類可使用的主要方法getSource()方法:用來(lái)獲取引發(fā)事件的對(duì)象名。getActionCommand()方法:用來(lái)獲取對(duì)象的標(biāo)簽或事先為這個(gè)對(duì)象設(shè)置的命令名。事件處理的步驟創(chuàng)建組件對(duì)象為可能發(fā)生事件的對(duì)象注冊(cè)監(jiān)聽(tīng)在實(shí)現(xiàn)監(jiān)聽(tīng)接口的類中改寫該接口中定義的所有的抽象方法在抽象方法體中寫入事件響應(yīng)的代碼事件響應(yīng)實(shí)現(xiàn)接口ActionListener;響應(yīng)動(dòng)作事件
publicvoidactionPerformed(ActionEvente)
編寫一個(gè)程序單擊按鈕時(shí)改變標(biāo)簽文本與按鈕文本的內(nèi)容。importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassc10_1extendsJAppletimplementsActionListener
{Containercp=getContentPane();
Iconro=newImageIcon("g1.gif");
Iconge=newImageIcon("g2.gif");
Iconpr=newImageIcon("g3.gif");
JButtonbt=newJButton();
Iconicon=newImageIcon("g4.jpg");
JLabellb=newJLabel("Java",icon,JLabel.CENTER);
publicvoidinit()
{
bt.setRolloverEnabled(true);
bt.setText("OK");
bt.setHorizontalTextPosition(JLabel.CENTER);
bt.setVerticalTextPosition(JLabel.BOTTOM);
cp.add(lb,BorderLayout.NORTH);
cp.add(bt,BorderLayout.SOUTH);
bt.setIcon(ge);
bt.setRolloverIcon(ro);
bt.setPressedIcon(pr);
bt.addActionListener(this);
}publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==bt)
{
if(lb.getText()=="Hello")
lb.setText("你好!");
else
lb.setText("Hello");
if(bt.getText()=="OK")
bt.setText("確定");
else
bt.setText("OK");
}
}
}JCheckBox和JRadioButton組件
JCheckBox類的構(gòu)造方法
JCheckBox()JCheckBox(Stringtext)JCheckBox(Stringtext,booleanselected)JCheckBox(Iconicon)JCheckBox(Iconicon,booleanselected)JCheckBox(Stringtext,Iconicon)JCheckBox(Stringtext,Iconicon,booleanselected)JRadioButton的構(gòu)造方法JRadioButton()JRadioButton(Stringtext)JRadioButton(Stringtext,booleanselected)JRadioButton(Iconicon)JRadioButton(Iconicon,booleanselected)JRadioButton(Stringtext,Iconicon)JRadioButton(Stringtext,Iconicon,booleanselected)如何實(shí)現(xiàn)選項(xiàng)按鈕的單選功能定義組javax.swing.ButtonGroupButtonGroupbg=newButtonGroup();定義選項(xiàng)按鈕
r1=newJRadioButton("10");
r2=newJRadioButton("16");
將按鈕添加到組里
bg.add(r1);
bg.add(r2);
常用方法同JButton組件和JToggleButton組件
ItemEvent
引發(fā)這類事件的動(dòng)作包括:
(1)改變復(fù)選框JCheckbox對(duì)象的選中或不選中狀態(tài);
(2)改變單選按鈕JRadioButton對(duì)象的選中或不選中狀態(tài);
(3)改變下拉列表框JComboBox對(duì)象中選項(xiàng)的選中或不選中狀態(tài);
(4)改變菜單項(xiàng)JMenuItem對(duì)象中選項(xiàng)的選中或不選中狀態(tài);
(5)改變JCheckboxMenuItem對(duì)象中選項(xiàng)的選中或不選中狀態(tài)。
ItemEvent類的主要方法
1)ItemSelectablegetItemSelectable()
返回引發(fā)選中狀態(tài)變化的事件源.此外,ItemEvent類的事件也可以使用其父類EventObject類提供的getSource()方法返回引發(fā)選中狀態(tài)變化的事件源。2)ObjectgetItem()
返回引發(fā)選中狀態(tài)變化事件的具體選擇項(xiàng),3)intgetStateChange()
返回此組件到底有沒(méi)有被選中。它的返回值是靜態(tài)常量SELECTED(代表選項(xiàng)被選中)和DESELECTED(代表選項(xiàng)被放棄或不選)事件響應(yīng)
對(duì)象名.addItemListener(this);
引用ItemListener中的itemStateChanged(ItemEvente)方法響應(yīng)對(duì)象的狀態(tài)改變
根據(jù)復(fù)選框、與選擇按鈕來(lái)改變標(biāo)簽組件的文本大小及顏色importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassc10_2extendsJAppletimplements
ItemListener,ActionListener
{
inti1=0,i2=0,i3=0;
intfonti=10;
Fontfont;
Containerctp=getContentPane();
JLabellb=newJLabel("請(qǐng)選擇");
JCheckBoxcb1,cb2,cb3;
JRadioButtonr1,r2,r3;
ButtonGroupbg=newButtonGroup();publicvoidinit()
{
ctp.setLayout(newFlowLayout());
cb1=newJCheckBox("紅色",false);
cb1.addItemListener(this);
ctp.add(cb1);
cb2=newJCheckBox("綠色",false);
cb2.addItemListener(this);
ctp.add(cb2);
cb3=newJCheckBox("藍(lán)色",false);
cb3.addItemListener(this);
ctp.add(cb3);
r1=newJRadioButton("10");
r1.addActionListener(this);
ctp.add(r1);
r2=newJRadioButton("16");
r2.addActionListener(this);
ctp.add(r2);
r3=newJRadioButton("24");
r3.addActionListener(this);
ctp.add(r3);bg.add(r1);bg.add(r2);bg.add(r3);
ctp.add(lb);
}publicvoiditemStateChanged(ItemEvente)
{JCheckBoxcbx=(JCheckBox)e.getItem();
if(cbx.getText()=="紅色")
{if(e.getStateChange()==e.SELECTED)
i1=255
else
i1=0;
}
if(cbx.getText()=="綠色")
{
if(e.getStateChange()==e.SELECTED)
i2=255;
else
i2=0;
}
if(cbx.getText()=="藍(lán)色")
{
if(cbx.isSelected())
i3=255;
else
i3=0;
}
font=newFont("宋體",Font.BOLD,fonti);
lb.setFont(font);
lb.setForeground(newColor(i1,i2,i3));
}publicvoidactionPerformed(ActionEvente)
{Stringrbt=e.getActionCommand();
if(rbt=="10")fonti=10;
elseif(rbt=="16")fonti=16;
elsefonti=24;
font=newFont("宋體",Font.BOLD,fonti);
lb.setFont(font);
lb.setForeground(newColor(i1,i2,i3));
}
}JComboBox組件
JComboBox組件被稱為下拉列表框用戶可在這個(gè)列表中進(jìn)行選擇,或者直接輸入所要的選項(xiàng)。下拉列表與選項(xiàng)按鈕類似,一次只能選擇一項(xiàng)。構(gòu)造方法
JComboBox(Vectoritems)JComboBox()JComboBox(ComboBoxModelaModel)JComboBox(Object[]items)成員方法
voidaddActionListener(ActionListenere)voidaddItemListener(ItemListeneraListener)addItem(ObjectanObject)StringgetActionCommand()ObjectgetItemAt(intindex)intgetItemCount()intgetSelectedIndex()事件響應(yīng)
選中列表中的選項(xiàng)產(chǎn)生ItemListener事件實(shí)現(xiàn)接口ItemListener處理方法
publicvoiditemStateChanged(ItemEvente)
在JComboBox組件中添加4個(gè)學(xué)生的名字選項(xiàng),當(dāng)點(diǎn)擊下拉列表選擇項(xiàng)時(shí)得到學(xué)生的名字,將他的成績(jī)用標(biāo)簽文本顯示。importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;publicclassc10_3extendsJAppletimplementsItemListener
{
Containerctp=getContentPane();
JLabellb1=newJLabel("姓名:"),
lb2=newJLabel("英語(yǔ):"),
lb3=newJLabel("");
Stringname[]={"李林","趙欣","張揚(yáng)","童梅"},
score[]={"80","94","75","87"};
JComboBoxcbx=newJComboBox();
publicvoidinit()
{
ctp.setLayout(newFlowLayout());
for(intj=0;j<name.length;j++)
cbx.addItem(name[j]);
ctp.add(lb1);
ctp.add(cbx);
cbx.addItemListener(this);
ctp.add(lb2);
ctp.add(lb3);
}publicvoiditemStateChanged(ItemEvente)
{
intc=0;
Stringstr=(String)e.getItem();
for(inti=0;i<name.length;i++)
if(str==name[i])
c=cbx.getSelectedIndex();
lb3.setText(score[c]);
}
}
JList組件
JList稱為列表組件
JList組件與JComboBox組件的最大區(qū)別是:JComboBox組件一次只能選擇一項(xiàng),而JList組件一次可以選擇一項(xiàng)或多項(xiàng),選擇多項(xiàng)時(shí)可以是連續(xù)區(qū)間選擇(按住Shift鍵進(jìn)行選擇),也可以是不連續(xù)的選擇(按住Ctrl鍵進(jìn)行選擇)。
構(gòu)造方法
JList(VectorlistData)JList()JList(ListModeldataModel)JList(Object[]listData)成員方法
voidaddListSelectionListener
(ListSelectionListenere)IntgetSelectedIndex()Int[]getSelectedIndices()voidsetSelectionBackground(Colorc)voidsetSelectionForeground(Colorc)intgetVisibleRow()CountvoidsetVisibleRowCount(intnum)ListSelectionEvent事件
1.當(dāng)用戶單擊列表框中的某一個(gè)選項(xiàng)并選中它時(shí),將產(chǎn)生ListSelectionEvent類的選擇事件,此事件是Swing的事件;
2.當(dāng)用戶雙擊列表框中的某個(gè)選項(xiàng)時(shí),將產(chǎn)生MouseEvent類的動(dòng)作事件。事件響應(yīng)接口ListSelectionListener實(shí)現(xiàn)方法valueChanged(ListSelectionEvente)
設(shè)置一個(gè)JLabel組件和JList組件,點(diǎn)擊列表框中的選項(xiàng),將所選項(xiàng)的值作為JLabel組件的文本輸出。
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;publicclassc10_4extendsJAppletimplementsListSelectionListener
{
JListlis=null;
JLabellb=null;
String[]s={"小學(xué)","初中","高中","大學(xué)","研究生"};
publicvoidinit()
{Containercp=getContentPane();
cp.setLayout(newBorderLayout());
lb=newJLabel();
lis=newJList(s);
lis.setVisibleRowCount(3);
lis.setBorder(BorderFactory.createTitledBorder("請(qǐng)選擇"));
lis.addListSelectionListener(this);
cp.add(lb,BorderLayout.NORTH);
cp.add(newJScrollPane(lis),BorderLayout.CENTER);
}
publicvoidvalueChanged(ListSelectionEvente)
{
intm=0;
Stringstr="選取的是:";
int[]index=lis.getSelectedIndices();
for(inti=0;i<index.length;i++)
{
m=index[i];
str=str+s[m]+"";
}
lb.setText(str);
}
}
JTextField與JTextArea組件
JtextField被稱為文本框。它定義了一個(gè)單行條形文本區(qū),可以輸出任何基于文本的信息,也可以接受用戶的輸入。
JtextField構(gòu)造方法
JTextField()JTextField(intn)JTextField(Strings)JTextField(Strings,intn)成員方法
intgetColumns()voidsetColumns(intColumns)voidaddActionListener(ActionListenere)voidsetFont(Fontf)voidsetHorizontalAlignment(intalig)voidsetActionCommand(Stringcom)JTextArea構(gòu)造方法JTextArea()JTextArea(intn,intm)JTextArea(Strings)JTextArea(Strings,intn,intm)JTextArea(Strings,intn,intm,intk)JTextArea(Documentdoc)JTextArea(Documentdoc,Strings,intn)成員方法
voidsetFont(Fontf)voidinsert(Stringstr,intpos)voidappend(Stringstr)voidreplaceRange(Stringstr,intstart,intend)publicintgetRows()publicvoidsetRows(introws)publicintgetColumns()publicvoidsetColumns(intColumns)事件處理
JTextField類只引發(fā)ActionEvent事件
JTextArea的事件響應(yīng)由JTextCompo
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋可再生能源利用裝備考核試卷
- 染整行業(yè)品牌建設(shè)考核試卷
- 畜禽養(yǎng)殖環(huán)境監(jiān)測(cè)與調(diào)控考核試卷
- 廣東省六校聯(lián)盟深圳實(shí)驗(yàn)廣州二中珠海一中惠州一中東莞中學(xué)2025屆學(xué)業(yè)水平考試數(shù)學(xué)試題模擬卷(十四)
- 健身器材制造業(yè)消費(fèi)者行為研究與產(chǎn)品設(shè)計(jì)創(chuàng)新策略考核試卷
- 橡膠復(fù)合材料研發(fā)考核試卷
- 洗浴服務(wù)行業(yè)線上營(yíng)銷策略考核試卷
- 真空電子器件制造綜合應(yīng)用考核試卷
- 全球及中國(guó)機(jī)場(chǎng)照明市場(chǎng)發(fā)展格局與投資前景動(dòng)態(tài)研究報(bào)告2025-2030年
- 行政文員培訓(xùn)課程
- 深度學(xué)習(xí)入門試題及答案概述
- 固定資產(chǎn)管理制度實(shí)施細(xì)則
- 統(tǒng)編版語(yǔ)文五年級(jí)下冊(cè)習(xí)作《形形色色的人》精美課件
- 急診科與住院部臨床科室的患者交接制度與流程
- 2025屆山西省晉中市高三下學(xué)期適應(yīng)性訓(xùn)練考試(二模)英語(yǔ)試題+答案(原卷版+解析版)
- 2024年廣西職業(yè)院校技能大賽高職組《智能飛行器應(yīng)用技術(shù)》賽項(xiàng)樣題第2套
- 2025年北森人才測(cè)評(píng)試題及答案2023
- 10.1二元一次方程組的概念教學(xué)設(shè)計(jì)+++-2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)下冊(cè)
- 2024北京朝陽(yáng)區(qū)高二(下)期末英語(yǔ)試題和答案
- 2025年上半年安徽淮北市建投控股集團(tuán)限公司招聘39人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 原料藥行業(yè)趨勢(shì)及市場(chǎng)前景分析報(bào)告
評(píng)論
0/150
提交評(píng)論