




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
就需要使用AWT的處理機(jī)制。為了讓初學(xué)者熟悉AWT的處理機(jī)制,本案例將實(shí)現(xiàn)關(guān)4)通過addWindowListener()方法為源器對象。importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample01publicstaticvoidmain(String[]args)FramefnewFrame("f.setSize(300, MyWindowListenermw=newMyWindowListener();}}classMyWindowListenerimplementsWindowListener publicvoidwindowClosing(WindowEvent{Windowwindow=e.getWindow();}publicvoidwindowActivated(WindowEvente)}publicvoidwindowClosed(WindowEvente)}publicvoidwindowDeactivated(WindowEvente)}publicvoidwindowDeiconified(WindowEvente)}publicvoidwindowIconified(WindowEvente)}publicvoidwindowOpened(WindowEvente)}}圖9-1 (Event (Listener 此之間有著非常緊密的聯(lián)系,接下來用一個(gè)圖例來描述處理的工作流程,如圖9-2所示。 了讓初學(xué)者熟悉AWT適配器,本案例將使用AWT適配器優(yōu)化窗體關(guān)閉代碼。4)重寫適配器類中的windowClosing()方法importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample02publicstaticvoidmain(String[]args)FramefnewFrame("f.setSize(300,//為窗口組 }}classMyWindowListenerextendsWindowAdapterpublicvoidwindowClosing(WindowEvent{Windowwindow=(Window) }}圖9-3 MyWindowListenerWindowAdapter,同樣實(shí)現(xiàn)了關(guān)閉窗口的功不必要的代碼,所以在方法數(shù)不超過3個(gè)時(shí)候,不需要繼承適配器類。 窗2)創(chuàng)建WindowListener實(shí)例對象。importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample03publicstaticvoidmain(String[]finalFramefnewFrame("窗體");f.setSize(400,300); f.addWindowListener(newpublicvoidwindowOpened(WindowEvente}publicvoidwindowActivated(WindowEvent}publicvoidwindowIconified(WindowEvent}publicvoidwindowDeiconified(WindowEvente)}publicvoidwindowDeactivated(WindowEvent}publicvoidwindowClosing(WindowEvent{System.out.println("窗體正在關(guān)閉"); }publicvoidwindowClosed(WindowEvent}}} 在本案例中,通過WindowListener對操作窗口的動(dòng)作進(jìn)行,當(dāng)接收到特定的動(dòng)作后,就將所觸發(fā)的名稱打印出來。了解了窗體,在以后的編程中,可以根據(jù)實(shí)際需求,在器中自定義窗importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample04publicstaticvoidmain(String[]finalFramefnewFrame("鼠標(biāo)f.setSize(300,200);ButtonbutnewButton("按鈕 but.addMouseListener(newpublicvoidmouseReleased(MouseEvente}publicvoidmousePressed(MouseEvent}publicvoidmouseExited(MouseEvent}publicvoidmouseEntered(MouseEvent}publicvoidmouseClicked(MouseEvent}圖9-5 用鼠標(biāo)點(diǎn)擊按鈕,運(yùn)行結(jié)果如圖9-6所示。 publicvoidmouseClicked(MouseEvent{if(e.getButton()==e.BUTTON1){ } } }}MouseEventMouseEventgetButton()方法對象的getClickCount()方法獲取到。 鍵importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample05publicstaticvoidmain(String[]{Framef=newFrame("鍵盤 f.setLayout(newFlowLayout());f.setSize(400,300);TextFieldtfnewTextField(30創(chuàng)建文本框?qū)ο骹.add(tf);//在窗口中添加文本框組件 tf.addKeyListener(new{publicvoidkeyPressed(KeyEvent{intKeyCodee.getKeyCodeStringsKeyEvent.getKeyText(KeyCode返回按鍵的字符串描述System.out.print("輸入內(nèi)容為:"+s+",");System.out.println("KeyCode為:"+KeyCode);}} 本案例中,當(dāng)在圖9-7中的文件框中鍵入字符時(shí),便觸發(fā)了鍵盤。這時(shí),KeyEvent類通過調(diào)用getKeyCode()方法將輸入內(nèi)容對應(yīng)的整數(shù)值返回,即keyCode。在KeyEvent類中還有一個(gè)靜態(tài)方法getKeyText(intkeyCode),它可以將按鍵內(nèi)容以String形式返回。 右放置。為了讓初學(xué)者熟悉流式布局管理器,本案例將演示FlowLayout布局管理器的用法。2)設(shè)置窗體中的布局管理器為FlowLayout。importjava.awt.*;importimportjava.awt.*;importjava.awt.event.*;publicclassExample06publicstaticvoidmain(String[]args)finalFramefnewFrame("流式布局f.setLayout(newFlowLayout(FlowLayout.LEFT,25,25));f.setSize(200 , Buttonbut1newButton("11 but1.addActionListener(newActionListener(){//動(dòng)作 為第1個(gè)按鈕添加點(diǎn)擊privateintnum=1; //定義變量num,記錄按鈕的個(gè)數(shù)publicvoidactionPerformed(ActionEvente){ }}} 1、FlowLayout布局管理器的特點(diǎn)就是可以將所有組件像流水一樣依次進(jìn)行排列,不需要用戶明確的位案例9-7 BorderLayout布局管理器分別是東(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。為了讓初學(xué)者熟悉BorderLayout布局,本案例演示一下BorderLayout布局管理器對組件布局的效果。2)設(shè)置窗體中的布局管理器為BorderLayoutimportjava.awt.*;publicimportjava.awt.*;publicclassExample07{publicstaticvoidmain(String[]finalFramefnewFrame("邊界布局f.setLayout(new Buttonbut2newButton("西");Buttonbut3newButton("南");Buttonbut4newButton("北");Buttonbut5newButton("中"); }} 布局的效果如圖9-11所示。 BorderLayout的好處就是可以限定各區(qū)域的邊界,當(dāng)用戶改變?nèi)萜鞔翱诖笮r(shí),各個(gè)組件的相對位置importjava.awt.*;publicimportjava.awt.*;publicclassExample08{publicstaticvoidmain(String[]FramefnewFrame("網(wǎng)格布局f.setSize(300,300); //設(shè)置窗體大小f.setLocation(400,300);for(inti=1;i<=12;i++)ButtonbtnnewButton("btni);f.add(btn);//向窗體中添加按鈕}}} 2、GridLayout布局管理器的特點(diǎn)是組件的相對位置不隨區(qū)域的縮放而改變,但組件的大小會(huì)隨之改GridBagLayout(網(wǎng)格包布局管理器)GridLayout布局個(gè)網(wǎng)格。為了讓初學(xué)者熟悉GridBagLayout的布局,本案例將來演示GridBagLayout的用法。importclassLayoutextends{publicLayout(String{GridBagLayoutlayout=newGridBagLayout();GridBagConstraintsc=newGridBagConstraints();c.fillGridBagConstraints.BOTHc.weightx1c.weighty1ponent("btn1",layout,c);ponent("btn2",layout,c);ponent("btn3",layout,ponent("btn4",layout,c.weightx0c.weighty=0;//0ponent("btn5layoutc);c.gridwidth1;設(shè)置組件跨一個(gè)網(wǎng)格(默認(rèn)值)ponent("btn6",layout,c);ponent("btn7",layout,c);c.gridheight=2;//設(shè)置組件縱向跨兩個(gè)網(wǎng)格c.gridwidth=1;//設(shè)置組件橫向跨一個(gè)網(wǎng)格c.weightx=2; //設(shè)置橫向權(quán)重為2c.weighty ponent("btn8",layout,c);c.gridwidth=GridBagConstraints.REMAINDER;c.gridheight=1;ponent("btn9",layout,c);ponent("btn10",layout,c);}privatevoid ponent(Stringname,GridBagLayoutlayout,GridBagConstraintsc){ButtonbtnewButton(namename}}publicclassExample09publicstaticvoidmain(String[]{new}}
GridBagLayoutlayout=GridBagLayoutlayout=newGridBagConstraintsGridBagConstraintsconstraints=newGridBagConstraints();constraints.gridx=1; //設(shè)置網(wǎng)格的左上角橫向索引constraints.gridy=1; //設(shè)置網(wǎng)格的左上角縱向索引constraints.gridwidth=1;//設(shè)置組件橫向 constraints.gridheight=1;//設(shè)置組件縱 重復(fù)2、3、4步驟。 卡片,而管理這些卡片的布局管理器就是卡片布局管理器(CardLayout)。為了讓初學(xué)者熟悉CardLayout布局管理器,本案例將演示CardLayout中常用方法的使用。Example10Cardlayoutimportjava.awt.*;importjavax.swing.*;importjava.awt.*;importjavax.swing.*;classCardlayoutextendsFrameimplementsActionListenerPanelcardPanel=newPanel(); PanelcontrolpaPanel=newPanel();//定義Panel面板放置按鈕Buttonnextbutton,preButton;CardLayoutcardLayoutnewCardLayoutpublicCardlayout //setSize(300,200);器this.addWindowListener(new{publicvoidwindowClosing(WindowEvente){} ////在cardPanel面板對象中添加2個(gè)文本cardPanel.add(newLabel(" 播客",Label.CENTER));cardPanel.add(newLabel(" 程序員",Label.CENTER));nextbuttonnewButton("下一張卡片");preButton=newButton("上一張卡片//為按鈕對象 controlpaPanel中} publicvoidactionPerformed(ActionEvente)nextbutton,執(zhí)行的語句ife.getSourcenextbutton//}if(e.getSource()==preButton)//}}}publicclassExample10publicstaticvoidmain(String[]{Cardlayoutcardlayout=new}} 的整個(gè)區(qū)域。在CardLayout布局管理中經(jīng)常會(huì)用到下面幾個(gè)方法,如下表所示。String案例9-11 本案例將演示如何使用Graphics類中的方法。設(shè)計(jì)類MyPanel繼承類Panel,用于畫。3) importjava.awt.*;importjava.awt.event.*;importjava.util.Random;publicclassExample11publicstaticvoidmain(String[]args)finalFrameframe=newFrame(" ");//創(chuàng)建Frame對象finalPanelpanel=newMyPanel(); //創(chuàng)建Canvas對象//將Frame窗口居中}}classMyPanelextends{publicvoidpaint(Graphics{intwidth=200;//定 intheight=60;//定義 //設(shè)置上下文顏色g.fillRect(0,0,width,height); //填充 //設(shè)置上下文顏色g.drawRect(0,0,width-1,height-1);//繪制邊框Randomr=newfor(inti=0;i<100;{intx=r.nextInt(width)-2;inty=r.nextInt(height)-2;g.drawOval(x,y,2,2);}g.setFont(newFont("黑體",Font.BOLD,30));//設(shè) //設(shè) char[]chars= +StringBuildersb=newStringBuilder();for(inti=0;i<4;i++){intpos=r.nextInt(chars.length);charc=chars[pos];sb.append(c+"}g.drawString(sb.toString2030}}} 表列出了Graphic類中常用的方法。voiddrawLine(intx1,intintx2,intvoiddrawRect(intx,inty,intintxxwidthyyvoiddrawOval(intx,inty,intwidth,intheight)width和height參數(shù)指定的矩形中。橢圓覆蓋區(qū)域的寬度為width1height1voidfillRect(intx,inty,intintxxwidth1yyheightintvoiddrawString(Stringstr,intx,int(x,y)案例9-12 JDialog框可分為兩種:模態(tài)框和非模態(tài)框。所謂模態(tài)框是指用戶需要等到處理完框后才能繼續(xù)與其它窗互,為了方便初學(xué)者掌握J(rèn)dialog類的使用,本案例將演示JDialog框中的模態(tài)框的使用。importjava.awt.*;importjava.awt.*;importjavax.swing.*;publicclassExample12{publicstaticvoidmain(String[]{JButtonbtn=newJButton("模式 JFramef=newJFrame("模式 f.setSize(300,250);f.setLayout(newFlowLayout());//設(shè)置點(diǎn)擊關(guān)閉按鈕默認(rèn)關(guān)閉窗口finalJLabellabel=newfinalJDialogdialognewJDialog(fdialog.setLocation(350,250);dialog.setLayout(newFlowLayout());finalJButtonbtn2newJButton("確定");dialog.add(btn2);// 框 btn.addActionListener(new{publicvoidactionPerformed(ActionEvent{//設(shè) if ponents().length=={} ////顯 }}} Dialog案例9-13 讓初學(xué)者掌握J(rèn)Frame組件的使用,本案例將演示JFrame的效果。importjava.awt.event.*;importjavax.swing.*;publicimportjava.awt.event.*;importjavax.swing.*;publicclassExample13extendsJFrame{publicthis.setSize(300,200);JButtonbtnewJButton("關(guān)閉窗口//設(shè)置點(diǎn)擊關(guān)閉按鈕時(shí)的默認(rèn)操作}publicstaticvoidmain(String[]{newExample13}} JFrame類創(chuàng)建了一個(gè)窗體,并向該窗體中添加了一個(gè)按鈕。JFrameFrame類最大的區(qū)別在于,JFrame類提供了關(guān)閉窗口的功能,在程序中不需要添加窗體器,只需調(diào)用setDefaultCloseOperation()JFrame.EIXT_ON_CLOSE作為參數(shù)傳入即可,該參數(shù)表示點(diǎn) JScrollPane是一個(gè)帶有滾動(dòng)條的面板容器,而且這個(gè)面板只能添加一個(gè)組件,如果想往中。為了讓初學(xué)者掌握J(rèn)ScrollPane面板容器的使用,本案例將演示一下向中間容器添加按鈕。importjava.awt.*;importjava.awt.*;publicclassExample14extends{publicExample14(){JScrollPanescrollPane=new//設(shè)置水平滾動(dòng)條策略--滾動(dòng)條一直顯示JPanelpanel=new//將滾動(dòng)面板添加到內(nèi)容面板的CENTER區(qū)域this.add(scrollPane,BorderLayout.CENTER);this.setSize(400,250);}publicstaticvoidmain(String[]{newExample14}} 單獨(dú)存在,只能放置在頂級窗口中。其中最常見的中間容器有兩種:JPanel和JScrollPvsb,inthsb)參數(shù)vsb和hsb分別表示垂直滾動(dòng)條策略和水平滾動(dòng)ScrollPaneConstants的靜態(tài)常量,如下所示:void 本組件的使用,本案例將演示一下文本組件JTextField和JTextArea組件的使用。importjava.awt.*;importjava.awt.*;importjavax.swing.*;publicclassExample15extends{JButtonsendBt;JTextFieldinputField;JTextAreachatContent;publicExample15(){chatContentnewJTextArea(1234JScrollPanesho nelJScrollPanesho nel=newJScrollPane(chatContent); //設(shè)置文本域不可編輯JPanelinputPanel=newJPanel();//創(chuàng)建一個(gè)JPanel面板inputField=newJTextField(20);//創(chuàng)建一個(gè)文本框sendBt=newJButton("發(fā)送"); //創(chuàng)建一個(gè)發(fā)送按鈕StringcontentinputField.getTextif(content!=null&&!content.trim().equals(""))chatContent.append(content+}else 內(nèi)容不能為空} }Labellabel=newLabel("編輯//JPanel將文本框添加到JPanelJPanelJPanelJFrame this.setSize(400,300);}publicstaticvoidmain(String[]{newExample15}} 象時(shí)可以設(shè)定區(qū)域的行數(shù)、列數(shù),接下來介紹一下JTextArea常用的構(gòu)造方法,如表9-11所示。 案例9-16 JCheckBox組件被稱為復(fù)選框,它有選中(是)/未選中(非)兩種狀態(tài),如果用戶想接收的輸入importjava.awt.*;importjava.awt.*;importjavax.swing.*;publicclassExample16extends{privateJCheckBoxitalic;privateJCheckBoxbold;privateJLabellabel;publicExample16(){ labelnewJLabel("請選擇字體樣式//設(shè) label.setFont(newFont("宋體",Font. IN,20)); //在CENTER域添加JPanelpanelnewJPanel創(chuàng)建一個(gè)JPanel//創(chuàng)建兩個(gè)JCheckBox復(fù)選框italicnewJCheckBox("斜體");bold=newJCheckBox("黑體"); ActionListenerlistener=new{publicvoidactionPerformed(ActionEvente){intmode=0;mode+=mode+=label.setFont(newFont("宋體mode}//為兩個(gè)復(fù)選框添加 this.add(panel,BorderLayout.SOUTH);this.setSize(300,300);}publicstaticvoidmain(String[]{newExample16}} 1、本案例中,在JPanel面板中放置了“黑體”和“斜體”兩個(gè)復(fù)選框,并為這兩個(gè)按鈕事兩個(gè)復(fù)選框時(shí)“請選擇字體樣式”所顯示的字體樣式。案例9-17 JRadioButtonJRadioButton按鈕來說,件的使用,本案例將演示一下JRadioButton組件的用法。importjava.awt.*;importjavax.swing.*;importjava.awt.*;importjavax.swing.*;publicclassExample17extendsprivateButtonGroupgroup單選按鈕組對privateJPanel privateJPanel public{pallet=newpanel=newJPanel();group=newButtonGroup();//調(diào)用addJRadioButton()方法this.setSize(300,300);}@param privatevoidaddJRadioButton(finalString{JRadioButtonradioButton=newpublicpublicvoidactionPerformed(ActionEvent{Colorcolor=null;if紅".equals(textcolor=elseif黃{color=elseif藍(lán){color=}elsecolor=}}}publicstaticvoidmain(String[]{newExample17}} 1JPanel面板中放置了“紅”、“黃”、“藍(lán)”三個(gè)單選按鈕,并為這三個(gè)按鈕 JComboBox下拉列表框,本案例將演示JComboBox下拉列表框的用法。importjava.awt.*;importjavax.swing.*;publicclassExample18extendsJFrameprivateJComboBoxcomboBox;privateJTextFieldfield;publicExample18(){
JPanelpanelnewJPanelJPanelcomboBox=new {publicvoidactionPerformed(ActionEvente)StringitemStringcomboBox.getSelectedItem();if("請選擇城市".equals(item)){}}elsefield.setText("您選擇的城市是:}}field=newJTextField(20);panel.add(comboBox);//在面板中添加組合框 //在面板中添加文本//在內(nèi)容面板中添加JPanel面板this.add(panel,BorderLayout.NORTH);this.setSize(350,100);}publicstaticvoidmain(String[]{newExample18}} 、、boBox組合框組件分為可編輯和不可編輯兩種形式,對于不可編輯的組合框,用戶只能在現(xiàn) 要使用三個(gè)組件:JBar(菜單欄)、J(菜單)和JItem(菜單項(xiàng)),為了讓初學(xué)者熟悉下拉菜 創(chuàng)建JItem菜單項(xiàng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稅務(wù)局規(guī)范化建設(shè)
- 新教師培訓(xùn)方案設(shè)計(jì)思路
- 非特異性肋軟骨炎的健康宣教
- 2024屆四川省自貢市富順三中學(xué)、代寺區(qū)中考五模數(shù)學(xué)試題含解析
- 胸導(dǎo)管損傷的健康宣教
- 2025《設(shè)備采購合同》示范文本
- 2025水利工程勞務(wù)分包合同
- 2025標(biāo)準(zhǔn)房屋買賣合同
- 2025年個(gè)人房屋抵押借款合同
- 2025騰訊云服務(wù)產(chǎn)品合同
- 天津市南開區(qū)2024-2025學(xué)年高三下學(xué)期質(zhì)量監(jiān)測(一)地理試卷(原卷版+解析版)
- 【原創(chuàng)】學(xué)校書記中央八項(xiàng)規(guī)定精神學(xué)習(xí)心得
- 2025年商丘職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫含答案
- 2025年榆林城市投資經(jīng)營集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 液氯鋼瓶應(yīng)急堵漏工具操作指導(dǎo)規(guī)程
- 自然辯證法知到課后答案智慧樹章節(jié)測試答案2025年春浙江大學(xué)
- 2025新人教版七年級歷史下教案-第20課 明清時(shí)期社會(huì)經(jīng)濟(jì)的發(fā)展
- 股份制合作協(xié)議及企業(yè)章程草案
- 硬件工程師招聘筆試題及解答
- 脫硫塔內(nèi)部結(jié)構(gòu)優(yōu)化設(shè)計(jì)-洞察分析
- 加油站安全生產(chǎn)風(fēng)險(xiǎn)分級管控和隱患排查治理雙體系方案全套資料匯編
評論
0/150
提交評論