![Java語(yǔ)言程序設(shè)計(jì)教案56學(xué)時(shí)第9章_第1頁(yè)](http://file4.renrendoc.com/view11/M01/0E/3F/wKhkGWWU5XyAS23JAAETqUgWJiw695.jpg)
![Java語(yǔ)言程序設(shè)計(jì)教案56學(xué)時(shí)第9章_第2頁(yè)](http://file4.renrendoc.com/view11/M01/0E/3F/wKhkGWWU5XyAS23JAAETqUgWJiw6952.jpg)
![Java語(yǔ)言程序設(shè)計(jì)教案56學(xué)時(shí)第9章_第3頁(yè)](http://file4.renrendoc.com/view11/M01/0E/3F/wKhkGWWU5XyAS23JAAETqUgWJiw6953.jpg)
![Java語(yǔ)言程序設(shè)計(jì)教案56學(xué)時(shí)第9章_第4頁(yè)](http://file4.renrendoc.com/view11/M01/0E/3F/wKhkGWWU5XyAS23JAAETqUgWJiw6954.jpg)
![Java語(yǔ)言程序設(shè)計(jì)教案56學(xué)時(shí)第9章_第5頁(yè)](http://file4.renrendoc.com/view11/M01/0E/3F/wKhkGWWU5XyAS23JAAETqUgWJiw6955.jpg)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
進(jìn)度計(jì)
學(xué)時(shí)教學(xué)方法與手段
授課內(nèi)容劃
分配
課堂講授(學(xué)時(shí))上機(jī)實(shí)踐(學(xué)時(shí))(周次)
Java語(yǔ)后入IJ
標(biāo)識(shí)符、關(guān)鍵字和數(shù)據(jù)類(lèi)型6421?2
運(yùn)算符、表達(dá)式和語(yǔ)句
類(lèi)與對(duì)象141042?5
子類(lèi)與繼承6425-7
接口與實(shí)現(xiàn)4227-8
內(nèi)部類(lèi)與異常類(lèi)2208
常用實(shí)用類(lèi)6429-10
組件及事件處理64210-11
輸入、輸出流22012
JDBC與MySQL數(shù)據(jù)庫(kù)42212-13
Java多線(xiàn)程機(jī)制22013
Java網(wǎng)絡(luò)的基本知識(shí)22014
總結(jié)22014
總學(xué)時(shí)564016
各章教學(xué)實(shí)施計(jì)劃
章節(jié)題目第9章組件及事件處理學(xué)時(shí)
2
9.1節(jié)-9.4.2節(jié)
教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):
1、了解JavaSwing概述。
2、掌握常用組(JFrame類(lèi)、菜單條、菜單、菜單項(xiàng))件與布局。
3、掌握事件處理的模式。
4、掌握ActionEvent事件、ItemEvent事件的處理。
教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):
基本內(nèi)容:
?JavaSwing概述。
?常用組(JFrame類(lèi)、菜單條、菜單、菜單項(xiàng))件與布局。
?事件處理的模式。
?ActionEvent事件、ItemEvent事件的處理。
重點(diǎn):窗口JFrame常用方法、常用組件與布局、事件處理模式。
難點(diǎn):事件處理模式(9.4.2)。
討論、思考題、作業(yè):
習(xí)題92(1),(3)
預(yù)習(xí)第9章9.4.3—9.12節(jié)
參考書(shū)目(含參考書(shū)、文獻(xiàn)等)具體內(nèi)容:
參考書(shū)對(duì)應(yīng)章節(jié)
課堂教學(xué)實(shí)施計(jì)劃
教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí)________一分鐘;授新課95一分鐘
第15課
討論.5一分鐘;其它_________一分鐘
授課類(lèi)型(請(qǐng)打J):理論課J討論課口實(shí)驗(yàn)課口習(xí)題課口其它口
教學(xué)方式(請(qǐng)打J):講授J討論口示教口指導(dǎo)口其它口
教學(xué)手段(請(qǐng)打J):多媒體模型口實(shí)物口掛圖口音像口其它J
主要內(nèi)容
基本內(nèi)容:
?JavaSwing概述。
?常用組(JFrame類(lèi)、菜單條、菜單、菜單項(xiàng))件與布局。
?事件處理的模式。
?ActionEvent事件、ItemEvent事件的處理。
重點(diǎn):窗口JFrame常用方法、常用組件與布局、事件處理模式。
難點(diǎn):事件處理模式(942)。
第9章組件及事件處理
§9.1JavaSwing概述
通過(guò)圖形用戶(hù)界面(GUI:GraphicsUserInterface),用戶(hù)和程序之間可以方便地進(jìn)行交
互。Java的Swing工具包中包含了許多類(lèi)來(lái)支持GUI設(shè)計(jì)。如:按鈕、菜單、列表、文本框等
組件類(lèi),同時(shí)它還包含窗口、面板等容器類(lèi)。
javax.swing包提供了功能更為強(qiáng)大的用來(lái)設(shè)計(jì)GUI的類(lèi)。
在學(xué)習(xí)GUI編程時(shí),必須要很好的掌握兩個(gè)概念:容器類(lèi)和組件類(lèi)。
javax.swing包中JComponent類(lèi)是java,awt包中Container類(lèi)的一個(gè)直接子類(lèi)、是
java,awt包中Component類(lèi)的一個(gè)間接子類(lèi),學(xué)習(xí)GUI編程主要是學(xué)習(xí)掌握使用Component類(lèi)
的一些重要的子類(lèi)及其使用方法。
以下是GUI編程經(jīng)常提到的基本知識(shí)點(diǎn)。
Java把Component類(lèi)的子類(lèi)或間接子類(lèi)創(chuàng)建的對(duì)象稱(chēng)為一個(gè)組件.
Java把Container的子類(lèi)或間接子類(lèi)創(chuàng)建的對(duì)象稱(chēng)為一個(gè)容器.
可以向容器添加組件。Container類(lèi)提供了一個(gè)public方法:add(),一個(gè)容器可以調(diào)用
這個(gè)方法將組件添加到該容器中。
容器調(diào)用removeAll。方法可以移掉容器中的全部組件;調(diào)用remove(Componentc)方法可
以移掉容器中參數(shù)c指定的組件。
注意到容器本身也是一個(gè)組件,因此可以把一個(gè)容器添加到另一個(gè)容器中實(shí)現(xiàn)容器的嵌套。
每當(dāng)容器添加新的組件或移掉組件時(shí),應(yīng)當(dāng)讓容器調(diào)用validate。方法,以保證容器中的
組件能正確顯示出來(lái)
如:
JFramef=newJFrame();
JButtonbutton=newJButton("確定”)
f.add(button);
f.remove(button);
§9.2窗口
Java提供的JFrame類(lèi)的實(shí)例是一個(gè)底層容器,即通常所稱(chēng)的窗口。其他組件必須被添加
到底層容器中,以便借助這個(gè)地層容器和操作系統(tǒng)進(jìn)行信息交互。
JFrame類(lèi)是Container類(lèi)的間接子類(lèi)。當(dāng)需要一個(gè)窗口時(shí),可使用JFrame或其子類(lèi)創(chuàng)建
一個(gè)對(duì)象。
窗口也是一個(gè)容器,可以向窗口添加組件。需要注意的是,窗口默認(rèn)地被系統(tǒng)添加到顯示
器屏幕上,因此不允許將一個(gè)窗口添加到另一個(gè)容器中。
§9.2.1JFrame常用方法
JFrame構(gòu)造方法:
JFrame()創(chuàng)建一個(gè)無(wú)標(biāo)題的窗口。
JFrame(Strings)創(chuàng)建標(biāo)題為s的窗口。
常用方法:
publicvoidsetBounds(inta,intb,intwidth,intheight設(shè)置窗口的初始位置是
(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height。
publicvoidsetSize(intwidth,intheight)設(shè)置窗口的大小。
publicvoidsetLocation(intx,inty)設(shè)置窗口的位置,默認(rèn)位置是(0,0)。
publicvoidsetVisible(booleanb)設(shè)置窗口是否可見(jiàn),窗口默認(rèn)是不可見(jiàn)的。
publicvoidsetResizable(booleanb)設(shè)置窗口是否可調(diào)整大小,默認(rèn)可調(diào)整大小。
publicvoiddispose()撤消當(dāng)前窗口,并釋放當(dāng)前窗口所使用的資源。
等。
例子1
Example9_l.java
importjavax.swing,
importjava.awt.*;
publicclassExample9_l{
publicstaticvoidmain(Stringargs[]){
JFramewindowl=newJFram一(”第一個(gè)窗口”);
JFramewindow2=newJFram一(”第二個(gè)窗口”);
Containercon=windowl.getContentPane();
con.setBackground(Color.yellow);//設(shè)置窗口的背景色
windowl.setBounds(60,100,188,108);//設(shè)置窗口在屏幕上的位置及大小
window2.setBounds(260,100,188,108);
windowl.setVisible(true);
windowl.setDefaultCloseOperation(JFrame.D工SPOSE_ON_CLOSE);
//釋放當(dāng)前窗口
window2.setVisible(true);
window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退
出程序
)
}
§9.2.2菜單條、菜單、菜單項(xiàng)
菜單條、菜單、菜單項(xiàng)是窗口常用的組件,菜單放在菜單條里,菜單項(xiàng)放在菜單里。
1.菜單條
2.菜單
3.菜單項(xiàng)
4.嵌入子菜單
5.菜單上的圖標(biāo)
例子2在主類(lèi)的main方法中用JFrame的子類(lèi)創(chuàng)建一個(gè)含有菜單的窗口,效果如圖9.3所
Zj\o
Example9_2.java
publicclassExample9_2{
publicstaticvoidmain(Stringargs[]){
WindowMenuwin=newWindowMenu(”帶菜單的窗口”,20,30,200,190);
)
)
WindowMenu.java
importjavax.swing.
importjava.awt.event.InputEvent;
importjava.awt.event.KeyEvent;
importstaticjavax.swing?JFrame.*;
publicclassWindowMenuextendsJFrame{//JFrame的子類(lèi)
JMenuBarmenubar;
JMenumenu,subMenu;
JMenuItemiteml,item2;
publicWindowMenu(){}
publicWindowMenu(Strings,intx,intyzintw,inth){
init(s);
setLocation(x,y);
setSize(w,h);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
)
voidinit(Strings){
setTitle(s);
menubar=newJMenuBar();
menu=newJM一rrn(“菜單”);
subMenu=newJMenu("軟件項(xiàng)目;
iteml=newJMenu工tem("Java話(huà)題”,newImageIcon("a.giff,));
item2=newJMenu工tem(“動(dòng)畫(huà)話(huà)題",newImageicon("b.gifn));
iteml?setAccelerator(Keystroke.getKeyStroke(1A1));
item2.setAccelerator(Keystroke.getKeyStroke(KeyEvent.VK_SZ
InputEvent.CTRL_MASK));
menu.add(iteml);
menu.addSeparator();
menu.acid(item2);
menu.add(subMenu);
subMenu.add(newJMenuItem(“汽車(chē)銷(xiāo)售系統(tǒng)”,newImageicon("c.gifn)));
subMenu.add(newJMenuItem("農(nóng)場(chǎng)信息系統(tǒng)”,newImageicon(Hd.gifn)));
menubar.add(menu);
setJMenuBar(menubar);
)
)
§9.3常用組件與布局
可以使用JComponent的子類(lèi)JTextField創(chuàng)建各種組件。利用組件可以完成應(yīng)用程序與用
戶(hù)的交互及事件處理等。
也可以在命令行窗口反編譯組件即時(shí)查看組件所具有的屬性及常用方法,例如:
C:\>javapjavax.swing.JComponent
也可以查看類(lèi)庫(kù)幫助文檔.例如下載Java類(lèi)庫(kù)幫助文檔:jdk-6-doc.zip。
§9.3.1常用組件
1.文本框:由JComponent的子類(lèi)JTextField創(chuàng)建文本框。
2.文本區(qū):由JComponent的子類(lèi)JTexArea創(chuàng)建文本區(qū)。
3.按鈕:由JComponent的子類(lèi)JButton類(lèi)用來(lái)創(chuàng)建按鈕。
4.標(biāo)簽:由JComponent的子類(lèi)JLabel類(lèi)用來(lái)創(chuàng)建標(biāo)簽。
5.選擇框:由JComponent的子類(lèi)JCheckBox類(lèi)用來(lái)創(chuàng)建選擇框
6.單選按鈕:由JComponent的子類(lèi)JRadioButton類(lèi)用來(lái)創(chuàng)建單項(xiàng)選擇框。
7.下拉列表:由JComponent的子類(lèi)JComboBox類(lèi)用來(lái)創(chuàng)建下拉列表。
8.密碼框:由JComponent的子類(lèi)JPasswordField創(chuàng)建密碼框.
例子3
Example9_3.java
publicclassExample9_3{
publicstaticvoidmain(Stringargs[]){
ComponentInWindowwin=newComponentlnWindow();
win,setBounds(100,100,310,260);
win.setTitle("常用組件”);
)
}
ComponentlnWindow.java
importjava.awt.*;
importjavax.swing.*;
publicclassComponentlnWindowextendsJFrame{
JCheckBoxcheckBoxlzcheckBox2;//選擇框
JRadioButtonradioM,radioF;//單選框
ButtonGroupgroup;
JComboBox<String>comBox;//下拉列表
publicComponentlnWindow(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame?EXIT_ON_CLOSE);
)
voidinit(){
setLayout(newFlowLayout());
comBox=newJComboBox<String>();
checkBoxl=newJCheckBox(“喜歡音樂(lè)”);
checkBox2=newJCh一ckBox(“喜歡旅游”);
group=newButtonGroup();
radioM=newJRadioButton(nM;
radioF=newJRadioButton(“女”);
group.add(radioM);
group.add(radioF);//歸組才能實(shí)現(xiàn)單選
add(checkBoxl);
add(checkBox2);
add(radioM);
add(radioF);
comBox.add工tem(“音樂(lè)天地”);
comBox.add工tem(“武術(shù)天地”);
add(comBox);
)
)
§9.3.2常用容器
JComponent是Container的子類(lèi),因此JComponent子類(lèi)創(chuàng)建的組件也都是容器。容器經(jīng)
常用來(lái)添加組件。JFrame是底層容器,本節(jié)提到的容器被習(xí)慣地稱(chēng)做中間容器,中間容器必須
被添加到底層容器中才能發(fā)揮作用。
1.JPanel面板
2.JTabbedPane選項(xiàng)卡窗格
3.滾動(dòng)窗格JScrollPane
4.拆分窗格JSplitPane
5.JLayeredPane分層窗格
§9.3.3常用布局
當(dāng)把組件添加到容器中時(shí),希望控制組件在容器中的位置,這就需要學(xué)習(xí)布局設(shè)計(jì)的知識(shí)。
我們將分別介紹java,awt包中的FlowLayout、BorderLayout>CardLayout>GridLayout
布局類(lèi)和java,swing,border包中的BoxLayout布局類(lèi)。
容器可以使用方法:setLayout(布局對(duì)象);來(lái)設(shè)置自己的布局,控制組件在容器中的位置
FlowLayout布局,是JPanel型容器的默認(rèn)布局。(重點(diǎn)介紹)
BorderLayout布局(簡(jiǎn)單介紹)
CardLayout布局(簡(jiǎn)單介紹)
GridLayout布局(建議學(xué)生自主學(xué)習(xí))
null布局(簡(jiǎn)單介紹)
BoxLayout布局(建議學(xué)生自主學(xué)習(xí))
例子4
Example9_4.java
publicclassExample9_4{
publicstaticvoidmain(Stringargs[]){
newShowLayout();
)
}
ShowLayout.java
importjava.awt.*;
importjavax.swing.*;
publicclassShowLayoutextendsJFrame{
PanelGridLayoutpannelGrid;//網(wǎng)格布局的面板
PanelNullLayoutpanelNull;//空布局的面板
JTabbedPanep;//選項(xiàng)卡窗格
ShowLayout。{
pannelGrid=newPanelGridLayout();
panelNull=newPanelNullLayout();
p=newJTabbedPane();
p.add(”網(wǎng)格布局的面板”,pannelGrid);
p.add(“空布局的面板“,panelNull);
add(p,BorderLayout.CENTER);
add(newJButton(“窗體是BorderLayout布局”),BorderLayout.NORTH);
add(newJButton(“南”),BorderLayout.SOUTH);
add(newJButton("西"),BorderLayout.WEST);
add(newJButton("東”),BorderLayout.EAST);
setBounds(10,10,570,390);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
validate();
}
PanelGridLayout.java
importjava.awt.*;
importjavax.swing.*;
publicclassPanelGridLayoutextendsJPanel{
PanelGridLayout(){
GridLayoutgrid=newGridLayout(12,12);//網(wǎng)格布局
setLayout(grid);
Labellabel[][]=newLabel[12][12];
for(inti=0;i<12;i++){
for(intj=0;j<12;j++){
label[i][j]=newLabel();
if((i+j)%2==0)
label[i][j].setBackground(Color.black);
else
label[i][j].setBackground(Color.white);
adddabel[i][j]);
)
)
}
}
PanelNullLayout.java
importjavax.swing.*;
publicclassPanelNullLayoutextendsJPanel{
JButtonbutton;
JTextFieldtext;
PanelNullLayout(){
setLayout(null);//空布局
button=newJButton("確定”);
text=newJTextField();
add(text);
add(button);
text?setBounds(100,30,90,30);
button.setBounds(190,30,66,30);
)
}
下面的例子5中,有兩個(gè)列型盒式容器boxVOne、boxVTwo和一個(gè)行型盒式容器boxH。將
boxV0ne>boxVTwo添加到boxH中,并在它們之間添加了水平支撐。
例子5
Example9_5.java
publicclassExample9_5{
publicstaticvoidmain(Stringargs[]){
WindowBoxLayoutwin=newWindowBoxLayout();
win.setBounds(100,100,310,260);
win.setTitle(”嵌套盒式布局容器”);
}
)
WindowBoxLayout.java
importjavax.swing.*;
publicclassWindowBoxLayoutextendsJFrame{
BoxboxH;//行式盒
BoxboxVOne,boxVTwo;//列式盒
publicWindowBoxLayout(){
setLayout(newjava.awt.FlowLayout());
init();
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
)——
voidinit(){
boxH=Box.createHorizontalBox();
boxV0ne=Box.createVerticalBox();
boxVTwo=Box.createVerticalBox();
boxVOne.add(newJLabel("姓名:M));
boxVOne.add(newJLabel("職業(yè):”));
boxVTwo.add(newJTextField(10));
boxVTwo.add(newJTextField(10));
boxH?add(boxVOne);
boxH.add(Box.createHorizontalStrut(10));
boxH?add(boxVTwo);
add(boxH);
}
)
§9.4處理事件(重點(diǎn))
學(xué)習(xí)組件除了要熟悉組件的屬性和功能外,一個(gè)更重要的方面是學(xué)習(xí)怎樣處理組件上發(fā)生
的界面事件。當(dāng)用戶(hù)在文本框中鍵入文本后按回車(chē)鍵、單擊按鈕、在一個(gè)下拉式列表中選擇一
個(gè)條目等操作時(shí),都發(fā)生界面事件。
程序有時(shí)需對(duì)發(fā)生的事件作出反應(yīng),來(lái)實(shí)現(xiàn)特定的任務(wù),例如,用戶(hù)單擊一個(gè)名字叫“確
定”或名字叫“取消”的按鈕,程序可能需要作出不同的處理。
§9.4.1事件處理模式
在學(xué)習(xí)處理事件時(shí),必須很好地掌握事件源、監(jiān)視器、處理事件的接口這三個(gè)概念。
1.事件源
2.監(jiān)視器
3.處理事件的接口
§9.4.2ActionEvent事件(重點(diǎn),難點(diǎn))
1.ActionEvent事件源
文本框、按鈕、菜單項(xiàng)、密碼框和單選按鈕都可以觸發(fā)ActionEvent事件,即都可以成為
ActionEvent事件的事件源。
2.注冊(cè)監(jiān)視器
Java規(guī)定能觸發(fā)ActionEvent事件的組件使用方法addActionListener(ActionListener
listen)將實(shí)現(xiàn)ActionListener接口的類(lèi)的實(shí)例注冊(cè)為事件源的監(jiān)視器。
3.ActionListener接口
方法publicvoidactionPerformed(ActionEvente)。
4.ActionEvent類(lèi)中的方法
ActionEvent類(lèi)有如下常用的方法:
publicObjectgetSource()
publicStringgetActionCommand()ActionEvent
下面的例子6處理文本框上觸發(fā)的ActionEvent事件。在文本框text中輸入字符串回車(chē),
監(jiān)視器負(fù)責(zé)計(jì)算字符串的長(zhǎng)度,并在命令行窗口顯示字符串的長(zhǎng)度。
例子6
Example9_6.java
publicclassExample9_6{
publicstaticvoidmain(Stringargs[]){
WindowActionEventwin=newWindowActionEvent();
win.setTitle("處理ActionEvent事件”);
win.setBounds(100,100,310,260);
)
)
WindowActionEvent.java
importjava.awt.
importjavax.swing.
importjava.awt.event.*;
publicclassWindowActionEventextendsJFrame{
JTextFieldtext;
ActionListenerlistener;//listener是監(jiān)視器
publicWindowActionEvent(){
setLayout(newFlowLayout());
text=newJTextField(10);
add(text);
listener=newReaderListen();//創(chuàng)建監(jiān)視器
text.addActionListener(listener);//text將listener注冊(cè)為自己的監(jiān)視器
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
)
}
ReaderListen.java
importjava.awt.event.*;
publicclassReaderListenimplementsActionListener{//負(fù)責(zé)創(chuàng)建監(jiān)視器的類(lèi)
publicvoidactionPerformed(ActionEvente){
Stringstr=e.getActionCommand();//獲取封裝在事件中的“命令"字符串
System.out.printIn(str+n:"+str.length());
)
)
下面例子7中的監(jiān)視器PoliceListen與例子6中的ReaderListen略有不同,PoliceListen
類(lèi)實(shí)現(xiàn)了ActionListerner接口的子接口MyComniand-Listener(我們自己寫(xiě)的一個(gè)接口)。
例子7
Example9_7.java
publicclassExample9_7{
publicstaticvoidmain(Stringargs[]){
WindowActionEventwin=newWindowActionEvent();
PoliceListenpolice=newPoliceListen();//創(chuàng)建監(jiān)視器
win.setMyCommandListener(police);//窗口組合監(jiān)視器
win.setBounds(100,100,460,360);
win.setTitle("處理ActionEvent事件");
}
}
WindowActionEvent.java
importjava.awt.*;
importjavax.swing.
publicclassWindowActionEventextendsJFrame{
JTextFieldinputText;
JTextAreatextshow;
JButtonbutton;
MyCommandListenerlistener;
publicWindowActionEvent(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
)
voidinit(){
setLayout(newFlowLayout());
inputText=newJTextField(10);
button=newJButton(“確定”);
textshow=newJTextArea(9,30);
add(inputText);
add(button);
add(newJScrollPane(textshow));
)
voidsetMyCommandListener(MyCommandListenerlistener){
this.listener=listener;
listener.setJTextField(inputText);
listener.setJTextArea(textshow);
inputText.addActionListener(listener);
//inputText是事件源,listener是監(jiān)視器
button.addActionListener(listener);
//button是事件源,listener是監(jiān)視器
)
}
MyCommandListener.java
importjavax.swing.*;
importjava.awt.event.*;
publicinterfaceMyCommandListenerextendsActionListener{//子接口多給出了2個(gè)方法
publicvoidsetJTextField(JTextFieldtext);
publicvoidsetJTextArea(JTextAreaarea);
)
PoliceListen.java
importjava.awt.event.*;
importjavax.swing.*;
publicclassPoliceListenimplementsMyCommandListener{//負(fù)責(zé)創(chuàng)建監(jiān)視器的類(lèi)
JTextFieldtextinput;
JTextAreatextShow;
publicvoidsetJTextField(JTextFieldtext){
textinput=text;
)
publicvoidsetJTextArea(JTextAreaarea){
textshow=area;
}
publicvoidactionPerformed(ActionEvente){
Stringstr=textInput.getText();
textshow.append(str+”的長(zhǎng)度:n+str.length()+”\n");
}
}
本次課總結(jié)
(1)掌握怎樣將其他組件嵌套到JFrame窗體中。
(2)掌握各種組件的特點(diǎn)和使用方法。
(3)本章重點(diǎn)掌握組件上的事件處理,Java處理事件的模式是:事件源、監(jiān)視器、處理
事件的接口。
作業(yè)
習(xí)題92(1),(3)
預(yù)習(xí)第9章94.3—9.4.10節(jié)
本次課結(jié)束
各章教學(xué)實(shí)施計(jì)劃
章節(jié)題目第9章組件及事件處理
學(xué)時(shí)2
9.4.3節(jié)一9.12節(jié)
教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):
1、掌握事件處理的模式。
2、使用MVC結(jié)構(gòu)。
3、掌握對(duì)話(huà)框。
4、了解樹(shù)組件與表格組件、按鈕綁定到鍵盤(pán)。
5、打印組件、發(fā)布GUI程序。
教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):
基本內(nèi)容:
?處理事件
?使用MVC結(jié)構(gòu)
?對(duì)話(huà)框
?樹(shù)組件與表格組件
?按鈕綁定到鍵盤(pán)
?發(fā)布GUI程序
重點(diǎn):事件處理模式。
難點(diǎn):匿名類(lèi)實(shí)例或窗口做監(jiān)視器(9.4.9)0
討論、思考題、作業(yè):
習(xí)題91(1)-(6)2(2)3⑴-(3)
課后調(diào)試?yán)?9一例子25代碼
預(yù)習(xí)第10章
參考書(shū)目(含參考書(shū)、文獻(xiàn)等)具體內(nèi)容:
參考書(shū)對(duì)應(yīng)章節(jié)
課堂教學(xué)實(shí)施計(jì)劃
教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí).5一分鐘;授新t果90一分鐘
第16課
討論.5一分鐘;其它一一分鐘
授課類(lèi)型(請(qǐng)打J):理論課J討論課口實(shí)驗(yàn)課口習(xí)題課口其它口
教學(xué)方式(請(qǐng)打J):講授J討論口示教口指導(dǎo)口其它口
教學(xué)手段(請(qǐng)打J):多媒體模型口實(shí)物口掛圖口音像口其它J
主要內(nèi)容
基本內(nèi)容:
?處理事件
?使用MVC結(jié)構(gòu)
?對(duì)話(huà)框
?樹(shù)組件與表格組件
?按鈕綁定到鍵盤(pán)
?發(fā)布GUI程序
重點(diǎn):事件處理模式。
難點(diǎn):匿名類(lèi)實(shí)例或窗口做監(jiān)視器(9.4.9)。
§9.4.3ItemEvent事件(重點(diǎn)講解,使學(xué)生進(jìn)一步理解事件處理)
1.ItemEvent事件源
選擇框、下拉列表都可以觸發(fā)ItemEvent事件。
2.注冊(cè)監(jiān)視器
3.ItemListener接口
方法publicvoiditemStateChanged(ItemEvente)。
例子8
Example9_8.java
publicclassExample9_8{
publicstaticvoidmain(Stringargs[]){
WindowOperationwin=newWindowOperation();
win.setBounds(100,100,390,360);
win.setTitle("簡(jiǎn)單計(jì)算器”);
}
}
WindowOperation.java
importjava.awt.*;
importjavax.swing.*;
importjava.io.*;
publicclassWindowoperationextendsJFrame{
JTextFieldinputNumberOne,inputNumberTwo;
JComboBoxchoiceFuhao;
JTextAreatextshow;
JButtonbutton;
OperatorListeneroperator;//監(jiān)視ItemEvent事件的監(jiān)視器
ComputerListenercomputer;//監(jiān)視ActionEvent事件的監(jiān)視器
publicWindowOperation(){
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
voidinit(){
setLayout(newFlowLayout());
inputNumberOne=newJTextField(5);
inputNumberTwo=newJTextField(5);
choiceFuhao=newJComboBox();
button=newJButton(“計(jì)算”);
choiceFuhao.add工tem("選擇運(yùn)算符號(hào):");
String[]a={”+“,“一“,“”,“/“};
for(inti=0;i<a.length;i++){
choiceFuhao.additem(a[i]);
)
textshow=newJTextArea(9Z30);
operator=newOperatorListener();
computer=newComputerListener();
operator.setJComboBox(choiceFuhao);
operator.setWorkTogether(computer);
computer.setJTextFieldOne(inputNumberOne);
computer.setJTextFieldTwo(inputNumberTwo);
computer.setJTextArea(textshow);
choiceFuhao.addltemListener(operator);
//choiceFuhao是事件源,operator是監(jiān)視器
button?addActionListener(computer);//button是事件源,computer是監(jiān)視器
add(inputNumberOne);
add(choiceFuhao);
add(inputNumberTwo);
add(button);
add(newJScrollPane(textShow));
)
}
OperatorListener.]ava
importjava.awt.event.*;
importjavax.swing.*;
publicclassOperatorListenerimplementsItemListener{
JComboBoxchoice;
ComputerListenerworkTogether;
publicvoidsetJComboBox(JComboBoxbox){
choice=box;
)
publicvoidsetWorkTogether(ComputerListenercomputer){
workTogether=computer;
)
publicvoiditemStateChanged(ItemEvente){
Stringfuhao=choice.getSelectedltem().toStringO;
workTogether.setFuhao(fuhao);
)
)
ComputerListener.java
importjava.awt.event.*;
importjavax.swing.*;
publicclassComputerListenerimplementsActionListener{
JTextFieldinputNumberOne,inputNumberTwo;
JTextAreatextshow;
Stringfuhao;
publicvoidsetJTextFieldOne(JTextFieldt){
inputNumberOne=t;
}
publicvoidsetJTextFieldTwo(JTextFieldt){
inputNumberTwo=t;
}
publicvoidsetJTextArea(JTextAreaarea){
textshow=area;
}
publicvoidsetFuhao(Strings){
fuhao=s;
)
publicvoidactionPerformed(ActionEvente){
try{
doublenumberl=Double.parseDouble(inputNumberOne.getText());
doublenumber2=Double.parseDouble(inputNumberTwo.getText());
doubleresult=0;
if(fuhao.equals("+")){
result=numberl+number2;
)
elseif(fuhao.equals(H-n)){
result=number1-number2;
)
elseif(fuhao.equals(n*n)){
result=numberl*number2;
)
elseif(fuhao.equals(n/u)){
result=number1/number2;
)
textshow.append(numberl+Hn4-fuhao+,f"+number2+"=n+result+
H\nn);
)
catch(Exceptionexp){
textshow.append(H\n請(qǐng)輸入數(shù)字字符\n”);
}
}
)
§9.4.4DocumentEvent事件(在9.4.3的基礎(chǔ)上簡(jiǎn)單講解)
1.DocumentEvent事件源
2.注冊(cè)監(jiān)視器
3.DocumentListener接口
DocumentListener接口在javax.swing,event包中,該接口中有三個(gè)方法:
publicvoidchangedUpdate(DocumentEvente)
publicvoidremoveUpdate(DocumentEvente)
publicvoidinsertUpdate(DocumentEvente)
例子9
Example9_9.java
publicclassExample9_9{
publicstaticvoidmain(Stringargs[]){
WindowDocumentwin=newWindowDocument();
win.setBounds(100,100,590z500);
win.setTitle(“排序單詞”);
WindowDocument.java
importjava.awt.*;
importjavax.swing.event.*;
importjavax.swing.*;
importjava.awt.event,
publicclassWindowDocumentextendsJFrame{
JTextAreainputText,showText;
JMenuBarmenubar;
JMenumenu;
JMenuItemitemCopy,itemCut,itemPaste;
TextListenertextChangeListener;//inputText的監(jiān)視器
HandleListenerhandleListener;//itemCopy,itamCut,itemPaste的監(jiān)視器
WindowDocument(){
init();
setLayout(newFlowLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
)
voidinit(){
inputText=newJTextArea(15,20);
showText=newJTextArea(15z20);
showText.setLineWrap(true);//文本自動(dòng)回行
showText.setWrapStyleWord(true);//文本區(qū)以單詞為界自動(dòng)換行
menubar=newJMenu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年裝飾包項(xiàng)目投資可行性研究分析報(bào)告-20241226-184551
- 2025年度環(huán)保技術(shù)引進(jìn)合作框架協(xié)議范本
- 2025年度國(guó)際廣告合作代理合同范本
- 2025年中國(guó)托管銀行行業(yè)市場(chǎng)調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2025年度建筑工程施工合同續(xù)簽補(bǔ)充協(xié)議
- 家庭牧場(chǎng)申請(qǐng)書(shū)
- 2025-2030年中國(guó)男式工服項(xiàng)目投資可行性研究分析報(bào)告
- 2025年度文化演出代理合作協(xié)議
- 2025年金屬天花產(chǎn)品項(xiàng)目可行性研究報(bào)告
- 打造影響力消費(fèi)品牌的實(shí)施策略
- 胸腔積液護(hù)理查房-范本模板
- 水土保持方案中沉沙池的布設(shè)技術(shù)
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營(yíng)企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進(jìn)本土項(xiàng)目化設(shè)計(jì)-讀《PBL項(xiàng)目化學(xué)習(xí)設(shè)計(jì)》有感
- 《網(wǎng)店運(yùn)營(yíng)與管理》整本書(shū)電子教案全套教學(xué)教案
- 教師信息技術(shù)能力提升培訓(xùn)課件希沃的課件
- 高端公寓住宅項(xiàng)目營(yíng)銷(xiāo)策劃方案(項(xiàng)目定位 發(fā)展建議)
- 執(zhí)業(yè)獸醫(yī)師聘用協(xié)議(合同)書(shū)
- 第1本書(shū)出體旅程journeys out of the body精教版2003版
- 2022年肝動(dòng)脈化療栓塞術(shù)(TACE)
評(píng)論
0/150
提交評(píng)論