通過(guò)例子學(xué)習(xí)swing圖形用戶界面設(shè)計(jì)_第1頁(yè)
通過(guò)例子學(xué)習(xí)swing圖形用戶界面設(shè)計(jì)_第2頁(yè)
通過(guò)例子學(xué)習(xí)swing圖形用戶界面設(shè)計(jì)_第3頁(yè)
通過(guò)例子學(xué)習(xí)swing圖形用戶界面設(shè)計(jì)_第4頁(yè)
通過(guò)例子學(xué)習(xí)swing圖形用戶界面設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第五章

用Swing編寫圖形界面2用Swing設(shè)計(jì)圖形界面的步驟設(shè)置窗口框架(創(chuàng)建Jframe子類)設(shè)置內(nèi)容面板(創(chuàng)建容器對(duì)象)對(duì)面板進(jìn)行布局加入圖形組件監(jiān)聽(tīng)用戶操作響應(yīng)用戶操作,實(shí)現(xiàn)具體業(yè)務(wù)功能3Swing組件分類1)頂層容器:JFrame2)中間容器:JPanel

3)基本組件:實(shí)現(xiàn)人際交互的組件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField。4框架JFrameSwing中,用JFrame類描述框架JFrame的常用構(gòu)造方法有:

JFrame()JFrame(Stringtitle)//創(chuàng)建一個(gè)標(biāo)題為title的框架5框架JFrameJFrame的常用成員方法:voidsetVisible(booleanb)//參數(shù)為true時(shí)設(shè)置框架可見(jiàn)voidsetSize(doublew,doubleh)//設(shè)置框架的寬和高voidsetLocation(intx,inty)//設(shè)置窗口左上角的坐標(biāo)ContainergetContentPane()//返回內(nèi)容面板voidsetDefaultCloseOperation(intoperation)//設(shè)置關(guān)閉窗口后的默認(rèn)操作6框架JFrame繼承JFrame定義一個(gè)新的框架類,并顯示這個(gè)框架類的對(duì)象。importjavax.swing.JFrame;classEmptyFrameextendsJFrame{ publicEmptyFrame(Stringtitle){ super(title);//調(diào)用超類的構(gòu)造方法

setSize(200,150); }}publicclassEx{ publicstaticvoidmain(String[]args){ EmptyFramef=newEmptyFrame("空的框架"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }}7在框架中添加組件JFrame包含一個(gè)叫內(nèi)容面板(contentpane)的容器。向JFrame添加組件不是將組件添加到JFrame,而是添加到內(nèi)容面板中向JFrame添加組件首先必須調(diào)用getContentPane()方法獲得JFrame的內(nèi)容面板內(nèi)容面板是Container的對(duì)象,Container的add()方法將組件加入內(nèi)容面板84在框架中添加組件在框架窗口中添加按鈕組件,并在屏幕的中央顯示框架classButtonFrameextendsJFrame{ ButtonFrame(){ super("按鈕和框架"); JButtonjb=newJButton("OK");//創(chuàng)建按鈕對(duì)象jb Containercon=getContentPane();//獲取內(nèi)容面板

con.add(jb);//將按鈕對(duì)象jb加入內(nèi)容面板

}}publicclassExample9_2{ publicstaticvoidmain(String[]args){ JFramebf=newButtonFrame();//超類變量引用子類對(duì)象

bf.setSize(200,150); bf.setLocation(400,300); bf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); bf.setVisible(true); }}9面板JPanelJPanel是中間容器,它不能在屏幕上獨(dú)立顯示,但可以容納其它組件,然后作為一個(gè)整體放置在JFrame中

JPanel的常用構(gòu)造方法和成員方法有:

JPanel()JPanel(LayoutManagerlayout)Componentadd(Componentcomp)//向面板添加組件,繼承自Container類10面板JPanel把按鈕加入面板,再把這個(gè)面板放在框架中。

classJPanelAppextendsJFrame{ JPanelApp(){ setTitle("使用JPanel");JPaneljp=newJPanel(); JButtonjb=newJButton("OK"); jp.add(jb);//將按鈕加入面板

add(jp);//將面板加入框架窗口的內(nèi)容面板

}}publicclassEx{ publicstaticvoidmain(String[]args){ JPanelAppf=newJPanelApp(); f.setSize(200,150); f.setLocation(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }}11顏色ColorColor是類庫(kù)中java.awt包中的類,它定義了13種表示標(biāo)準(zhǔn)顏色的static常量:

BLACKBLUECYANDARK_GRAYGRAYGREENLIGHT_GRAYMAGENTAORANGEPINKREDWHITEYELLOW12顏色Color除標(biāo)準(zhǔn)顏色外,還可以使用下列構(gòu)造方法自定義顏色:

Color(intred,intgreen,intblue)Component類中定義了如下方法設(shè)置組件的背景色:

voidsetBackground(Colorc)136顏色Color顯示一個(gè)空的框架窗口,框架的背景色設(shè)置成紅色。publicclassExample9_4{ publicstaticvoidmain(String[]args){ JFramef=newJFrame();f.setTitle("紅色背景"); f.setSize(200,150); f.setLocation(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Containercon=f.getContentPane();//獲取內(nèi)容面板

con.setBackground(Color.RED);//設(shè)置背景色

f.setVisible(true); }}14布局管理器

在容器中的所有組件的布局(位置和大?。┯刹季止芾砥鱽?lái)控制,在java中提供了下面的幾種布局管理器.FlowLayoutBorderlayoutGridLayoutCardLayoutGridBagLayout

15布局管理器BorderLayout是頂層容器(JFrame,JDialog,和JApplet

)的默認(rèn)布局管理器。有五個(gè)位置組件:16

布局管理器

BorderLayout17布局管理ContainercontentPane=getContentPane();contentPane.setLayout(newBorderLayout());contentPane.add(newJButton("Button1(NORTH)"), BorderLayout.NORTH);contentPane.add(newJButton("2(CENTER)"), BorderLayout.CENTER);contentPane.add(newJButton("Button3(WEST)"), BorderLayout.WEST);contentPane.add(newJButton("Long-NamedButton4(SOUTH)"), BorderLayout.SOUTH);contentPane.add(newJButton("Button5(EAST)"), BorderLayout.EAST);18

布局管理器2.FlowLayout組件按照加入的先后循序從左向右排列,一行排滿后之后就下轉(zhuǎn)到下一行繼續(xù)從左至右排列每一行中的組件都居中排列

19布局管理器2.FlowLayout20布局管理importjava.awt.*;importjavax.swing.*;publicclassFlowWindowextendsJFrame{publicFlowWindow(){ContainercontentPane=getContentPane();contentPane.setLayout(newFlowLayout());contentPane.add(newJButton("Button1"));contentPane.add(newJButton("2"));contentPane.add(newJButton("Button3"));contentPane.add(newJButton("Long-NamedButton4"));contentPane.add(newJButton("Button5"));}publicstaticvoidmain(Stringargs[]){FlowWindowwin=newFlowWindow();win.setTitle("FlowLayout");win.pack();win.setVisible(true);}}21布局管理器3.GridLayout基本布局策略是把容器的空間劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小區(qū)域中。所有的區(qū)域大小一樣。組件按從左到右,從上到下的方法加入。用構(gòu)造函數(shù)劃分出網(wǎng)格的行數(shù)和列數(shù),

newGridLayout(行數(shù),列數(shù))。

22布局管理器3.GridLayout23布局管理importjava.awt.*;importjavax.swing.*;publicclassGridWindowextendsJFrame{publicGridWindow(){ContainercontentPane=getContentPane();contentPane.setLayout(newGridLayout(3,2));contentPane.add(newJButton("Button1"));contentPane.add(newJButton("2"));contentPane.add(newJButton("Button3"));contentPane.add(newJButton("Long-NamedButton4"));contentPane.add(newJButton("Button5"));}

24事件處理事件:鍵盤、鼠標(biāo)、系統(tǒng)狀態(tài)改變;事件源:產(chǎn)生事件的組件;監(jiān)聽(tīng)器:系統(tǒng)隨時(shí)去監(jiān)視用戶對(duì)輸入設(shè)備(鍵盤和鼠標(biāo))的操作;事件處理機(jī)制:監(jiān)視到某個(gè)動(dòng)作產(chǎn)生時(shí),系統(tǒng)會(huì)去執(zhí)行特定的事件。事件源注冊(cè):對(duì)象名.addActionListener(監(jiān)聽(tīng)者對(duì)象)監(jiān)聽(tīng)者實(shí)現(xiàn):publicvoidactionPerformed(ActionEvente)ActionEvent事件注冊(cè)觸發(fā)事件調(diào)用并傳遞參數(shù)事件處理模型25事件處理機(jī)制

建立事件監(jiān)聽(tīng)器的步驟引入系統(tǒng)事件類包,如importjava.awt.Event.*在方法中調(diào)用事件源對(duì)象的方法(如addActionListener),注冊(cè)事件源對(duì)象的事件監(jiān)聽(tīng)者,如btn.addActionListener(this)實(shí)現(xiàn)事件接口中的相關(guān)方法,(如actionPerformed),即加入代碼以對(duì)所發(fā)生的事件作出處理。26圖形組件JLabel是用來(lái)顯示包含文字或圖形的標(biāo)簽,用戶不能編輯所顯示的文字。構(gòu)造函數(shù):JLabel():生成JLabel對(duì)象。JLabel(Stringtext):生成包含文字的JLabel對(duì)象。JLabel(Stringtext,intalignment):生成包含文字的JLabel對(duì)象并指定其水平對(duì)齊的方式。JLabel(Stringtext,Iconicon,intalignment):生成包含圖形和文字的JLabel對(duì)象,文字會(huì)顯示在圖形的后面。標(biāo)簽27圖形組件voidsetText(Stringtext):定義該組件所能顯示的文字。voidsetIcon(Iconicon):定義該組件所能顯示的圖形。voidsetHorizontalAlignment(intalignment):設(shè)置標(biāo)記內(nèi)容的水平對(duì)齊方式(LEFT,CENTER,RIGHT,LEADING和TRAILING)。voidsetVerticalAlignment(intalignment):設(shè)置標(biāo)記內(nèi)容的垂直對(duì)齊方式(TOP,CENTER和BOTTOM)。常用的方法28importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclasslabel{ publicstaticvoidmain(String[]args) { JFramef=newJFrame(); Containercontent=f.getContentPane(); JLabellabel1=newJLabel("Label1"); JLabellabel2=newJLabel("Label2");

label2.setHorizontalTextPosition(JLabel.LEFT); label2.setVerticalTextPosition(JLabel.BOTTOM); content.setLayout(newGridLayout(2,2)); content.add(label1); content.add(label2); f.setVisible(true); }}29CardLayout布局容器可以容納多個(gè)組件,但同一時(shí)刻容器只能從這些組件中選出一個(gè)來(lái)顯示,就像一疊“撲克牌”;創(chuàng)建CardLayout對(duì)象作為布局;

如:Mycard=newCardLayout();使用容器的setLayout()方法為容器設(shè)置布局;

如:con.setLayout(Mycard);30CardLayout布局調(diào)用容器的add()方法將組件加入容器;

如:con.add(組件)或add(組件代號(hào),組件);CardLayout類的構(gòu)造方法:CardLayout()創(chuàng)建間距為零的對(duì)象;CardLayout(inthgap,intvgap)創(chuàng)建帶有水平hgap和垂直vgap間距的對(duì)象31SwingGUI組件JTexFieldJComboBoxJCheckBoxJButtonJRadioButtonJLabelJTexArea32按鈕JButton類用來(lái)生成按鈕,常用的構(gòu)造函數(shù)如下:JButton():生成JButton對(duì)象。JButton(Iconicon):生成以圖形表示的JButton對(duì)象。JButton(Stringtext):生成以文字表示的JButton對(duì)象。JButton(Stringtext,Iconicon):生成包含文字和圖形的JButton對(duì)象。33例9-5importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classframeextendsJFrameimplementsActionListener{ inttimes; JButtonbutton1; JLabellabel1; publicframe() { super("ButtonExample"); Containercontent=getContentPane(); times=0; button1=newJButton("SayHello"); label1=newJLabel(); setBackground(Color.white); setLayout(newGridLayout(2,1));

button1.addActionListener(this);//為按鈕添加事件監(jiān)聽(tīng)器

content.add(button1); content.add(label1);

}

34例9-5 publicvoidactionPerformed(ActionEvente) { if(e.getSource()==button1) { times+=1; Stringname=newString("Hello,youhaveclickedthebutton"); name+=""+times+"times."; label1.setText(name); } } }publicclassButton{ publicstaticvoidmain(String[]args) { finalframef=newframe(); f.setBounds(100,100,300,300); f.setVisible(true);

}}35程序運(yùn)行如圖所示:按鈕示例36文本域與文本區(qū)

文本域(JTextField)和文本區(qū)(JTextArea)可以用來(lái)接受用戶輸入的文本。文本域允許用戶編輯單行的文本,而文本區(qū)則可以編輯多行文本。JTextField的構(gòu)造函數(shù)如下:

JTextField():生成JTextField。

JTextField(intn):將文本域的大小設(shè)為n行。

JTextField(Stringtext):指定文本域的默認(rèn)值為text。JTextField(Stringtext,intcols):設(shè)定文本域?yàn)閏ols行,并指定默認(rèn)值。

37文本域與文本區(qū)常用方法publicvoidsetText(Strings);//設(shè)置文本框publicStringgetTetx();//獲取文本框內(nèi)容密碼域(JPasswordField)是JTextField的子類,用來(lái)接收輸入的密碼:char[]getPassword()獲取輸入的口令chargetEchoChar()獲取口令框顯示字符voidsetEchoChar(charc)設(shè)置口令框中的顯示字符。系統(tǒng)默認(rèn)“*”38importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclasslabel{ publicstaticvoidmain(String[]args) { JFramef=newJFrame(); Containercontent=f.getContentPane();

JPanelpanel=newJPanel(); panel.setLayout(newGridLayout(2,2)); panel.add(newJLabel("UserName:")); panel.add(newJTextField(15)); panel.add(newJLabel("Password:")); panel.add(newJPasswordField(15));

content.add(panel); f.pack(); f.setVisible(true); }}39選擇組件復(fù)選框JCheckBox常用構(gòu)造方法有:

JCheckBox()JCheckBox(Stringtext)//text是文本

JCheckBox(Stringtext,booleanselected)

其中的boolean參數(shù)指定復(fù)選框的初始狀態(tài)是選中還是未選中,默認(rèn)取未選中狀態(tài)

40選擇組件JCheckBox常用的成員方法有:

voidsetSelected(booleanselected)//設(shè)置是否選中

booleanisSelected()//返回復(fù)選框當(dāng)前狀態(tài)41選擇組件復(fù)選框被點(diǎn)擊后其狀態(tài)在選中和未選中之間改變,并產(chǎn)生兩種事件對(duì)象,先觸發(fā)ItemEvent事件,然后觸發(fā)ActionEvent事件。ItemEvent的監(jiān)聽(tīng)接口是ItemListener,這個(gè)接口中只有一個(gè)響應(yīng)ItemEvent事件的方法:

publicvoiditemStateChanged(ItemEvente)ItemEvent的下列方法可以返回產(chǎn)生該事件的事件源對(duì)象名稱:

ObjectgetSource()42例JFrame中放置一個(gè)標(biāo)簽和控制標(biāo)簽字體的3個(gè)復(fù)選框,通過(guò)這三個(gè)復(fù)選框控制標(biāo)簽文本的字體

43classJCeckBoxDemo

extendsJFrameimplementsItemListener

{ JCheckBoxjc1,jc2,jc3; JLabeljl;

Fontfont; JCeckBoxDemo() { jc1=newJCheckBox("斜體"); jc2=newJCheckBox("粗體"); jc3=newJCheckBox("大體"); JPaneljp=newJPanel(); jp.add(jc1); jp.add(jc2); jp.add(jc3); jl=newJLabel("ThisisaJCeckBoxDemo!"); font=newFont("Serif",Font.PLAIN,14);

jl.setFont(font);//設(shè)置標(biāo)簽初始字體

add(jl); add(jp,BorderLayout.SOUTH);

jc1.addItemListener(this); jc2.addItemListener(this); jc3.addItemListener(this); }44//復(fù)選框狀態(tài)改變后的響應(yīng)程序publicvoiditemStateChanged(ItemEvente){intstyle=0;intsize;if(jc1.isSelected()) style=Font.ITALIC;if(jc2.isSelected()) style=style+Font.BOLD;if(style==0) style=Font.PLAIN;if(jc3.isSelected()) size=20;else size=14;font=newFont("Serif",style,size);jl.setFont(font);//重新設(shè)置字體}}45publicclasstest{ publicstaticvoidmain(String[]args) { JCeckBoxDemof=newJCeckBoxDemo(); f.setTitle("JCheckBoxDemo"); f.setSize(250,180); f.setLocation(400,300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }}46選擇組件單選按鈕JRadioButton常用的構(gòu)造方法有:

JRadioButton()JRadioButton(Stringtext)//text是單選按鈕的文本

JRadioButton(Stringtext,booleanselected)JRadioButton(Stringtext,Iconimage,booleanselected)

其中的boolean參數(shù)指定單選按鈕的初始狀態(tài)是選中還是未選中,默認(rèn)是未選中狀態(tài)

47選擇組件JRadioButton常用的成員方法有:

voidsetSelected(booleanselected)//設(shè)置是否選中

booleanisSelected()//返回單選按鈕當(dāng)前狀態(tài)48選擇組件與JRadioButton緊密相關(guān)的一個(gè)類是按鈕組ButtonGroup同一個(gè)ButtonGroup中只能有一個(gè)單選按鈕處于選中狀態(tài)。如果一個(gè)窗口中有幾組單選按鈕,每組必須新建一個(gè)ButtonGroup對(duì)象,并將該組所有單選按鈕加入這個(gè)按鈕組,才能確保各組的選擇互不干擾

JRadioButtonjb1,jb1;jb1=newJRadioButton(“男”);jb2=newJRadioButton(“女”);

ButtonGroupbg=newButtonGroup();bg.add(jb1);//把單選按鈕加入按鈕組

bg.add(jb2);//jb1和jb2在同一個(gè)按鈕組中,只能有一個(gè)處于選中狀態(tài)。49例:用單選按鈕控制標(biāo)簽的字體大小和顏色50classJRadioButtonDemoextendsJFrameimplementsActionListener{ JRadioButtonjf1,jf2,jf3; JRadioButtonjc1,jc2,jc3; JLabeljL; JRadioButtonDemo(){ JLabeljfL=newJLabel("字體大小:"); jf1=newJRadioButton("小號(hào)"); jf2=newJRadioButton("中號(hào)",true);//設(shè)置初始狀態(tài)為選中

jf3=newJRadioButton("大號(hào)"); ButtonGroupbg1=newButtonGroup();//bg1控制字體大小

bg1.add(jf1); bg1.add(jf2); bg1.add(jf3); JPaneljp1=newJPanel(newGridLayout(1,4)); jp1.add(jfL); jp1.add(jf1); jp1.add(jf2); jp1.add(jf3);

jf1.addActionListener(this); jf2.addActionListener(this); jf3.addActionListener(this);51ButtonGroupbg2=newButtonGroup();//bg2控制字體顏色bg2.add(jc1);bg2.add(jc2);bg2.add(jc3);JPaneljp2=newJPanel(newGridLayout(1,4));jp2.add(jcL);jp2.add(jc1);jp2.add(jc2);jp2.add(jc3);jc1.addActionListener(this);jc2.addActionListener(this);jc3.addActionListener(this);jL=newJLabel("JavaLanguage!");jL.setFont(newFont("Serif",Font.PLAIN,20));add(jL);add(jp1,BorderLayout.NORTH);add(jp2,BorderLayout.SOUTH);}52//單選按鈕狀態(tài)改變后的響應(yīng)程序publicvoidactionPerformed(ActionEvente){//改變字體大小if(e.getSource()==jf1)

jL.setFont(newFont("Serif",Font.PLAIN,10));elseif(e.getSource()==jf2)

jL.setFont(newFont("Serif",Font.PLAIN,20));elseif(e.getSource()==jf3)

jL.setFont(newFont("Serif",Font.PLAIN,30));//改變顏色if(e.getSource()==jc1)

jL.setForeground(Color.RED);elseif(e.getSource()==jc2)

jL.setForeground(Color.GREEN);elseif(e.getSource()==jc3)

jL.setForeground(Color.BLUE);}}53選擇組件組合框JComboBox常用的構(gòu)造方法和成員方法有:

JComboBox()//創(chuàng)建一個(gè)空組合框

JComboBox(Object[]items)//創(chuàng)建一個(gè)包含指定數(shù)組元素的組合框

voidaddItem(Objectitem)//添加項(xiàng)目到組合框

ObjectgetItemAt(intindex)//返回指定序號(hào)的項(xiàng)目

intgetSeletedIndex()//返回選中的項(xiàng)目序號(hào)

ObjectgetSeletedItem()//返回選中的項(xiàng)目54classJComboBoxDemoextendsJFrameimplementsItemListener{ JComboBoxjcb; JComboBoxDemo(){ Stringitems[]={"請(qǐng)選擇顏色","紅","橙","黃"}; jcb=newJComboBox(items);//新建初始有三個(gè)選項(xiàng)的組合框

jcb.addItem("綠");//向組合框添加新選項(xiàng)

jcb.addItem("藍(lán)"); add(jcb,BorderLayout.NORTH); jcb.addItemListener(this);}//選中JComboBox中的選項(xiàng)的響應(yīng)程序public

voiditemStateChanged(ItemEvente){ intindex=jcb.getSelectedIndex(); Colorcolor=Color.WHITE;55switch(index){case1:color=Color.RED;break;case2:color=Color.ORANGE;break;case3:color=Color.YELLOW;break;case4:color=Color.GREEN;break;case5:color=Color.BLUE;break; } Containercon=getContentPane();//獲取框架窗口的內(nèi)容面板

con.setBackground(color);//改變背景色}}56菜單2-1顯示一個(gè)項(xiàng)目列表,指明用戶可以執(zhí)行的各項(xiàng)操作

文件編輯格式幫助字體段落項(xiàng)目符號(hào)和編號(hào)背景色紅色綠色黑色菜單子菜單菜單項(xiàng)57JMenuBar類2-1只要選中JMenuItem,就會(huì)產(chǎn)生通過(guò)重寫actionPerformed()方法進(jìn)行處理的ActionEventJMenuBar文件編輯格式幫助新建打開(kāi)關(guān)閉JMenuJMenuItem58菜單的構(gòu)建(1)用類JMenuBar創(chuàng)建菜單條利用JMenuBar()構(gòu)造方法創(chuàng)建,例如:JMenuBar

aMenuBar=newJMenuBar();(2)用類JMenu創(chuàng)建菜單用JMenu的構(gòu)造方法來(lái)創(chuàng)建菜單,構(gòu)造方法為:publicJMenu(Strings)用字符串s作為文本來(lái)構(gòu)造菜單;例如:JMenuaMenu=newJMenu(“文件”);59(3)用類JMenuItem創(chuàng)建菜單項(xiàng)類JMenuItem的構(gòu)造方法:PublicJMenuItem(Stringtext)創(chuàng)建一個(gè)具有指定文本的菜單項(xiàng);例如:JMenuItemaMenuItem=newJMenuItem(“新建”);60創(chuàng)建菜單(續(xù))(4)將菜單項(xiàng)加入到菜單中,將菜單加入到菜單條中;例如:aMenuBar.add(aMenu);aMenuBar.add(aMenuItem);向菜單添加分隔線:addSeparator()(5)將菜單條加入容器中publicvoidsetJMenuBar(JMenuBarmenubar)(6)處理菜單項(xiàng)選擇事件監(jiān)聽(tīng)菜單項(xiàng)ActionEvent事件。61classMenuDemoextendsJFrameimplementsActionListener{JMenuItemjm1,jm2,jm3,jm4,jm5;JTextFieldjt1,jt2,jt3;MenuDemo(){JMenuBarmb=newJMenuBar();this.setJMenuBar(mb);JMenum1=newJMenu("運(yùn)算");JMenum2=newJMenu("程序");mb.add(m1);mb.add(m2);jm1=newJMenuItem("加");jm2=newJMenuItem("減");jm3=newJMenuItem("乘");jm4=newJMenuItem("除");jm5=newJMenuItem("終止");m1.add(jm1);m1.add(jm2);m1.add(jm3);m1.add(jm4);m2.add(jm5);62jm1.addActionListener(this);jm2.addActionListener(this);jm3.addActionListener(this);jm4.addActionListener(this);jm5.addActionListener(this);jt3=newJTextField(10);this.getContentPane().add(jt3); }public

voidactionPerformed(ActionEvente){if(e.getSource()==jm5)System.exit(0);if(e.getSource()==jm1)jt3.setText("進(jìn)行加法運(yùn)算");

if(e.getSource()==jm2)jt3.setText("進(jìn)行減法運(yùn)算");if(e.getSource()==jm3)jt3.setText("進(jìn)行乘法運(yùn)算");if(e.getSource()==jm4)jt3.setText("進(jìn)行除法運(yùn)算"); }}63工具欄Swing使用JToolBar作為存放工具欄組件的容器,工具欄中的組件通常是圖標(biāo)形式顯示的按鈕。JToolBar常用的構(gòu)造方法和成員方法有:

JToolBar()

add(Componentcomp)//增加組件到工具欄

addSeparator()//在工具欄末尾添加一個(gè)分隔符645工具欄工具欄上的組件調(diào)用下列方法可以為該命令設(shè)置提示信息:

setToolTipText(Stringtext)例:工具欄中存放四個(gè)帶圖標(biāo)按鈕代表四種軟件產(chǎn)品,光標(biāo)停留在按鈕上,顯示這個(gè)按紐表示何種軟件,點(diǎn)擊按鈕,由標(biāo)簽文本解釋這種軟件的作用65classToolBarDemoextendsJFrameimplementsActionListener{JButtonb1,b2,b3,b4;JLabeljl;ToolBarDemo(){Iconi1=newImageIcon("images/excel.gif");Iconi2=newImageIcon("images/pdf.gif");Iconi3=newImageIcon("images/ppt.gif");Iconi4=newImageIcon("images/word.gif");b1=newJButton(i1);//創(chuàng)建帶圖標(biāo)的按鈕b2=newJButton(i2);b3=newJButton(i3);b4=newJButton(i4);JToolBartb=newJToolBar("改變標(biāo)簽");tb.add(b1);b1.setToolTipText("excel的圖標(biāo)");//設(shè)置按鈕命令提示tb.add(b2);b2.setToolTipText("pdf的圖標(biāo)");tb.add(b3);b3.setToolTipText("ppt的圖標(biāo)");tb.add(b4);b4.setToolTipText("word的圖標(biāo)");add(tb,BorderLayout.NORTH);jl=newJLabel("請(qǐng)點(diǎn)擊工具欄上的按鈕!",SwingConstants.CENTER);add(jl);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);}66public

voidactionPerformed(ActionEvente){Strings=null;Stringpic=null

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論