第9章-Swing程序設(shè)計(jì)_第1頁(yè)
第9章-Swing程序設(shè)計(jì)_第2頁(yè)
第9章-Swing程序設(shè)計(jì)_第3頁(yè)
第9章-Swing程序設(shè)計(jì)_第4頁(yè)
第9章-Swing程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(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)介

1、Java程序設(shè)計(jì)第9章 Swing程序設(shè)計(jì)本講提綱GUI程序設(shè)計(jì)簡(jiǎn)介01Swing容器02布局管理器03Java事件處理04本講提綱常用Swing組件專(zhuān)題應(yīng)用:GUI的設(shè)計(jì)與實(shí)現(xiàn)0605第1節(jié) GUI程序設(shè)計(jì)簡(jiǎn)介 圖形用戶界面(Graphical User Interface,GUI)是指采用圖形方式顯示計(jì)算機(jī)操作環(huán)境的用戶接口,它能夠讓用戶和程序之間方便友好地進(jìn)行交互。Java API提供了AWT和Swing兩個(gè)包來(lái)實(shí)現(xiàn)java圖形用戶界面的構(gòu)建。 Java提供了非常強(qiáng)大而豐富的圖形用戶界面開(kāi)發(fā)包。它們包含哪些組件,如何利用它們使界面設(shè)計(jì)越來(lái)越美觀?第1節(jié) GUI程序設(shè)計(jì)簡(jiǎn)介java.swi

2、ng包是在AWT組件基礎(chǔ)上構(gòu)建的,是java2中的一個(gè)標(biāo)準(zhǔn)包。與具體的操作系統(tǒng)無(wú)關(guān),真正做到平臺(tái)獨(dú)立。在構(gòu)建界面時(shí) ,不要將兩種組件混用。java.awt包是java處理圖形用戶界面的初始途徑。創(chuàng)建的用戶界面在不同操作平臺(tái)上有不同的表現(xiàn)。為了實(shí)現(xiàn)“一次編寫(xiě),到處運(yùn)行”的特點(diǎn),使得可用組件數(shù)量不多,功能較弱。 第1節(jié) GUI程序設(shè)計(jì)簡(jiǎn)介 從圖中可以看出幾乎所有的AWT組件對(duì)應(yīng)有功能更強(qiáng)的swing組件Java.awt.Frame-javax.swing.JFrameSwing組件都是AWT的容器類(lèi)(Container)的直接子類(lèi)和間接子類(lèi)組件類(lèi)(Component)是一個(gè)抽象類(lèi),不能直接使用。組

3、件:是java圖形用戶界面的最基本組成部分。容器:是組件類(lèi)的子類(lèi),它可以容納其他組件,也就是說(shuō)在容器類(lèi)組件上可以放置標(biāo)簽,按鈕等組件。圖9-1 java.awt包及javax.swing包主要的類(lèi)與繼承關(guān)系 第1節(jié) GUI程序設(shè)計(jì)簡(jiǎn)介Swing組件從功能上可分為:頂層容器:JFrame,JApplet,JDialog,Jwindow。中間容器:JPanel,JScrollPane,JSplitPane,JtoolBar特殊容器:在GUI上起特殊作用的中間層,如:JInternalFrame,JLayeredPane。基本控件:實(shí)現(xiàn)人機(jī)交互的組件,如:JButton,JComboBox,JLis

4、t,JMenu,JSlider,JTextField等。不可編輯信息的顯示:向用戶顯示不可編輯信息的組件,如:JLabel,JProgressBar,ToolTip。可編輯信息的顯示:向用戶顯示能被編輯的格式化信息的組件,如:JColorChooser,JFileChooser,JTable,JTextArea。第2節(jié) Swing 容器頂層容器中間容器登陸取消請(qǐng)輸入用戶名:基本控件 在圖9-1中似乎有很多熟悉的名字,例如:JDialog(對(duì)話框),JButton(按鈕),JMenuBar(菜單欄)等,這些組件怎樣才能在圖形用戶界面上顯示,它們之間的排放是否有層次關(guān)系?第2節(jié) Swing 容器

5、在Swing組件中,能夠作最底層“底板”容器的組件只能是四個(gè)頂層容器組件。JFrame是最基本、最常用的是窗口容器,它是帶有標(biāo)題行和控制按鈕的獨(dú)立窗口。Jwindow是不帶有標(biāo)題行和控制按鈕的窗口,通常很少使用。JApplet是提供Java小程序的窗口界面形式。JDialog提供對(duì)話框的窗口形式。第2節(jié) Swing 容器 JFrame容器 設(shè)計(jì)GUI界面所需要的兩個(gè)基本包將button1對(duì)象加入到myWindow窗體對(duì)象中。在JDK5后的版本中也可以寫(xiě)成 myWindow.add(button1)創(chuàng)建JFrame頂層容器對(duì)象 創(chuàng)建JButton基本控件對(duì)象 調(diào)用JFrame的兩個(gè)方法指定窗體大

6、小并顯示窗體第2節(jié) Swing 容器JFramecontent pane JMenu Bar 在創(chuàng)建JFrame對(duì)象時(shí)會(huì)默認(rèn)添加一個(gè)內(nèi)容窗格(content pane),在JDK 5.0后,JFrame只是從java.awt.Container繼承了add、setLayout和remove三個(gè)方法,并不是全部的方法。myWindow.setBackground(Color.yellow);myWindow.getContentPane().setBackground(Color. yellow);本書(shū)仍采用向內(nèi)容窗格添加組件的方法myWindow.getContentPane().add(bu

7、tton1);等價(jià)于Container cp= myWindow.getContentPane();cp.add(button1); 第2節(jié) Swing 容器 程序運(yùn)行后,點(diǎn)擊窗口界面右上角的“”按鈕時(shí),窗口只是被隱藏起來(lái),但仍在后臺(tái)運(yùn)行。若要真正關(guān)閉窗口,可調(diào)用JFrame的setDefaultCloseOperation(int operation)方法實(shí)現(xiàn),operation參數(shù)常有以下四種值:myWindow.setDefaultCloseOperation(0);表示不執(zhí)行任何操作,也即不會(huì)關(guān)閉窗口 myWindow.setDefaultCloseOperation(1);隱藏窗口

8、myWindow.setDefaultCloseOperation(2); 隱藏并釋放窗口,當(dāng)最后一個(gè)窗口被釋放后,則程序也隨之運(yùn)行結(jié)束 myWindow.setDefaultCloseOperation(3);直接關(guān)閉應(yīng)用程序 第2節(jié) Swing 容器JFrame類(lèi)的常用方法 分析以下程序段,若實(shí)現(xiàn)9-1程序功能,main方法該如何實(shí)現(xiàn)?public class FirstFrameDemo1 extends JFrame public FirstFrameDemo1() super(第一個(gè)窗體); JButton button1 =new JButton(EXIT); Container

9、cp= getContentPane(); cp.add(button1); pack(); setVisible(true); setDefaultCloseOperation(this.EXIT_ON_CLOSE); /main方法作答主觀題第2節(jié) Swing 容器 JPanel容器 面板(JPanel)容器可以嵌套,但是不能獨(dú)立于頂層容器而單獨(dú)顯示 。 JPanel類(lèi)常用方法 第2節(jié) Swing 容器程序FirstPanelDemo片段實(shí)例化兩個(gè)面板對(duì)象實(shí)例化兩個(gè)按鈕對(duì)象將兩個(gè)按鈕分別添加到面板上設(shè)置兩個(gè)面板的顏色將面板添加到窗體上第3節(jié) 布局管理器 剛剛實(shí)例中,兩個(gè)按鈕以水平居中方式顯

10、示在面板上,兩個(gè)面板卻是以上寬下窄的方式被放置到窗體中,為什么會(huì)出現(xiàn)這種排放方式?如果按鈕靠左對(duì)齊,或者面板按照左右兩邊放置,可以嗎?用什么方法可以隨心所欲的排放各種組件呢? Java提供了布局管理器(LayoutManager)來(lái)管理組件在容器中的位置。第3節(jié) 布局管理器布局管理器的特征布局是容器的特征,每個(gè)容器類(lèi)都有一個(gè)默認(rèn)的布局管理器 。頂層容器JFrame或者內(nèi)容窗格的默認(rèn)布局管理器是BorderLayout。JPanel和JApplet的默認(rèn)布局是FlowLayout。布局管理器的使用直接使用默認(rèn)的布局管理器。在組件加入到容器之前,采用setLayout(LayoutManager

11、manager)方法改變?nèi)萜鞯哪J(rèn)布局。 第3節(jié) 布局管理器 FlowLayout布局管理器 FlowLayout(流式布局)是將容器內(nèi)的組件像水流一樣往某方向流動(dòng)(排列),遇到障礙(邊界)時(shí)便折回,繼續(xù)從下一行開(kāi)始排列。 第3節(jié) 布局管理器程序FlowLayoutDemo片段改變窗口大小Container cp=myWindow.getContentPane(); cp.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20);for (int i=1; i=10; i+) cp.add(new JButton(Button+ i);下列說(shuō)法中,錯(cuò)誤

12、的一項(xiàng)是( )使用FlowLayout在容器中放置組件的策略是:從上到下、從左到右使用FlowLayout 進(jìn)行布局管理時(shí),組件的大小采用的是其最佳尺寸使用FlowLayout進(jìn)行布局管理時(shí),不能調(diào)節(jié)組件之間的距離用FlowLayout 管理的組件隨容器大小變化的變化規(guī)律是:組件大小不變,組件之間的相對(duì)位置改變ABCD提交單選題第3節(jié) 布局管理器BorderLayout布局管理器BorderLayout(邊框布局)將容器劃分為五個(gè)區(qū)域。東(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER) 。添加組件時(shí)需要指明放置的區(qū)域,若沒(méi)有指定任何區(qū)域,則默認(rèn)放置到中間。某

13、個(gè)區(qū)域沒(méi)有放置組件,則其他組件將占據(jù)它的空間。在同一個(gè)區(qū)域內(nèi)放置多個(gè)組件,則最后放入的組件會(huì)覆蓋前面的組件。 第3節(jié) 布局管理器 cp.setLayout(new BorderLayout(); cp.add(b1,BorderLayout.EAST); cp.add(b2,BorderLayout.WEST); cp.add(b3,BorderLayout.SOUTH); cp.add(b4,BorderLayout.NORTH); cp.add(b5,BorderLayout.CENTER);b1,East 程序BorderLayoutDemo片段改變窗口大小第3節(jié) 布局管理器GridLa

14、yout布局管理器 GridLayout(網(wǎng)格布局)將容器分割為行高和列寬都相同的多行多列網(wǎng)格,每個(gè)組件將依次從左到右,從上到下添加到網(wǎng)格中。 第3節(jié) 布局管理器p1.setLayout(new GridLayout(3,5,5,5);for(int i=0;i10;i+) p1.add(new JButton( +i); p1.add(new JButton( +);p1.add(new JButton( -);p1.add(new JButton( *);p1.add(new JButton( /);p1.add(new JButton( =);cp.add(text1,BorderLay

15、out.NORTH); cp.add(p1,Center); 改變窗口大小程序GridLayoutDemo片段第3節(jié) 布局管理器絕對(duì)定位 Java也提供了一種精確定位的方式來(lái)控制組件在容器中的坐標(biāo),并且可以指定組件的大小。使用方法:setLayout方法將容器的布局方式設(shè)成null。setLayout(null) 調(diào)用組件的setBounds方法來(lái)設(shè)置組件的位置和大小setBounds(int x,int y,int width,int height) 把組件添加到容器中 第3節(jié) 布局管理器cp.setLayout(null);l1.setBounds(30, 30, 70, 30);text

16、1.setBounds(100, 30, 70, 30);b1.setBounds(60, 80, 70, 30);cp.add(l1);cp.add(text1);cp.add(b1);第4節(jié) Java事件處理事件驅(qū)動(dòng)是指觸發(fā)一個(gè)事件(單擊按鈕),程序就會(huì)執(zhí)行一個(gè)操作(關(guān)閉窗體)。 前面的所有實(shí)例始終致力于GUI的設(shè)計(jì),每個(gè)程序運(yùn)行后除了視覺(jué)上的美觀之外卻沒(méi)有實(shí)際意義。也就是說(shuō),任何按鈕都不會(huì)按照文字提示來(lái)響應(yīng)用戶的操作(比如單擊EXIT按鈕,它不會(huì)退出窗口),那么怎么才能讓組件“動(dòng)”起來(lái)呢? Java使用事件驅(qū)動(dòng)編程機(jī)制完成第4節(jié) Java事件處理 事件模型事件(Event):是指一種狀態(tài)

17、的改變或者一個(gè)動(dòng)作的發(fā)生。如單擊按鈕。 事件源(Event Source):事件是由用戶操作各種組件產(chǎn)生的,那么被操作的組件對(duì)象就被稱(chēng)為事件源。例如,單擊某按鈕時(shí),按鈕就是事件源。 事件監(jiān)聽(tīng)器(Event Listener):監(jiān)聽(tīng)事件源發(fā)生的事件,并對(duì)各種事件作出相應(yīng)的處理。事件監(jiān)聽(tīng)器包含在一個(gè)類(lèi)中,這個(gè)類(lèi)實(shí)現(xiàn)了某些特殊的接口,稱(chēng)為事件監(jiān)聽(tīng)器接口,在接口中定義了處理事件的抽象方法。 java.awt.event包和javax.swing.event包中定義了很多事件類(lèi)及事件監(jiān)聽(tīng)器接口。第4節(jié) Java事件處理 以單擊按鈕對(duì)象(button1)后關(guān)閉窗口為例來(lái)說(shuō)明委托事件模型處理事件的步驟。(1

18、)確定需要處理的事件。設(shè)計(jì)一個(gè)事件監(jiān)聽(tīng)器類(lèi),處理事件所對(duì)應(yīng)的監(jiān)聽(tīng)器接口,在該類(lèi)中重寫(xiě)對(duì)應(yīng)的抽象方法。 單擊按鈕觸發(fā)ActionEvent 事件ActionListener接口public void actionPerformed(ActionEvent e) 編寫(xiě)事件監(jiān)聽(tīng)器類(lèi)接口中定義的抽象方法對(duì)應(yīng)實(shí)現(xiàn)對(duì)應(yīng)的接口重寫(xiě)抽象方法,實(shí)現(xiàn)功能代碼第4節(jié) Java事件處理(2)將監(jiān)聽(tīng)器類(lèi)與事件源關(guān)聯(lián)起來(lái)??赏ㄟ^(guò)給事件源對(duì)象授權(quán)的方式來(lái)實(shí)現(xiàn)這個(gè)功能,也常稱(chēng)為向組件注冊(cè)事件監(jiān)聽(tīng)器。 事件源(組件)類(lèi)addXXXListener(EventListener eo)已經(jīng)實(shí)現(xiàn)的事件監(jiān)聽(tīng)器對(duì)象注冊(cè)方法按鈕對(duì)象Han

19、dle h1=new Handler();button1.addActionListener(h1);創(chuàng)建一個(gè)監(jiān)聽(tīng)器對(duì)象,將其注冊(cè)到按鈕上第4節(jié) Java事件處理事件處理過(guò)程模型 點(diǎn)擊按鈕時(shí)候,按鈕對(duì)象觸發(fā)一個(gè)ActionEvent事件,然后將它作為參數(shù)傳遞以調(diào)用監(jiān)聽(tīng)器的actionPerformed方法來(lái)處理這個(gè)事件。下列說(shuō)法中,錯(cuò)誤的一項(xiàng)是( ) 在Java中,若要處理某類(lèi)事件,必須定義相關(guān)的事件處理類(lèi)在對(duì)事件源實(shí)例化之后,要注冊(cè)相應(yīng)事件的監(jiān)聽(tīng)器事件處理類(lèi)必須實(shí)現(xiàn)與該類(lèi)事件相對(duì)應(yīng)的監(jiān)聽(tīng)器接口事件源通常是一個(gè)組件,也稱(chēng)監(jiān)聽(tīng)器ABCD提交單選題第4節(jié) Java事件處理import java.a

20、wt.event.*;public class ActionEventDemo public static void main(String args) button1.addActionListener(new Handler();class Handler implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0); /結(jié)束程序的運(yùn)行 程序ActionEventDemo片段第4節(jié) Java事件處理 事件類(lèi)和事件監(jiān)聽(tīng)器事件類(lèi) 事件監(jiān)聽(tīng)器 表9-6 常用的事件類(lèi)型及接口 第4節(jié) Java

21、事件處理事件監(jiān)聽(tīng)器類(lèi)事件監(jiān)聽(tīng)器對(duì)象是本類(lèi)對(duì)象實(shí)現(xiàn)接口中的方法public class MultiListenerDemo implements ActionListener public void designFrame () button1.addActionListener(this); button2.addActionListener(this); public void actionPerformed(ActionEvent e) if(e.getSource()=button1) panel1.setBackground(Color.red); else panel2.setBac

22、kground(new Color(a,b,c); 程序MultiListenerDemo片段(兩個(gè)事件源注冊(cè)同一個(gè)事件監(jiān)聽(tīng)器)第4節(jié) Java事件處理鼠標(biāo)事件 鼠標(biāo)事件包括鼠標(biāo)事件(MouseEvent)和鼠標(biāo)移動(dòng)事件(MouseMotionEvent)。MouseEvent是指鼠標(biāo)單擊,雙擊以及鼠標(biāo)進(jìn)入或離開(kāi)某組件區(qū)域時(shí)所觸發(fā)的事件,而MouseMotionEvent是指鼠標(biāo)拖動(dòng)或者移動(dòng)時(shí)所觸發(fā)的事件。 第4節(jié) Java事件處理程序MouseDemo片段public class MouseDemo public void designFrame () container.addMouseL

23、istener(new MouseHandler(); container.addMouseMotionListener(new MouseHandler(); class MouseHandler implements MouseListener,MouseMotionListener public void mouseClicked(MouseEvent e) int x=e.getX(); int y=e.getY(); System.out.println(鼠標(biāo)單擊的位置x:+x+ty:+y); public void mouseReleased(MouseEvent e) /鼠標(biāo)釋放

24、 public void mouseEntered(MouseEvent e) /鼠標(biāo)進(jìn)入窗口 事件監(jiān)聽(tīng)器類(lèi)注冊(cè)事件監(jiān)聽(tīng)器內(nèi)部類(lèi)作事件監(jiān)聽(tīng)器第4節(jié) Java事件處理鍵盤(pán)事件 鍵盤(pán)事件(KeyEvent)是指按下鍵盤(pán)的任何鍵都會(huì)觸發(fā)的事件。 第4節(jié) Java事件處理程序KeyDemo片段public class KeyDemo public void designFrame () b1.addKeyListener(new KeyListener() public void keyPressed (KeyEvent e) switch(e.getKeyCode() /判斷按鍵 case KeyE

25、vent.VK_UP: /向上方向鍵 button1.setLocation(x,y-5); /按鈕的位置法傷改變 break; public void keyReleased (KeyEvent e); public void keyTyped (KeyEvent e); ); /匿名內(nèi)部類(lèi)結(jié)束 事件監(jiān)聽(tīng)器類(lèi)注冊(cè)事件監(jiān)聽(tīng)器匿名內(nèi)部類(lèi)作事件監(jiān)聽(tīng)器“空實(shí)現(xiàn)”的方式實(shí)現(xiàn)后面兩個(gè)抽象方法。第4節(jié) Java事件處理 事件適配器 適配器類(lèi)就是為包含多個(gè)抽象方法的事件監(jiān)聽(tīng)器接口提供了一個(gè)抽象類(lèi)。這個(gè)抽象類(lèi)中實(shí)現(xiàn)了監(jiān)聽(tīng)器接口,并為該接口里的每個(gè)方法都提供了默認(rèn)實(shí)現(xiàn),但這種實(shí)現(xiàn)只是一種空實(shí)現(xiàn)。public a

26、bstract class MouseAdapter implements MouseListener public void mouseClicked(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) 第4節(jié) Java事件處理程序MouseDemo片段public class MouseDemo publi

27、c void designFrame () container.addMouseListener(new MouseHandler(); container.addMouseMotionListener(new MouseHandler(); class MouseHandler implements MouseListener,MouseMotionListener public void mouseClicked(MouseEvent e) int x=e.getX(); int y=e.getY(); System.out.println(鼠標(biāo)單擊的位置x:+x+ty:+y); publ

28、ic void mouseReleased(MouseEvent e) /鼠標(biāo)釋放 public void mouseEntered(MouseEvent e) /鼠標(biāo)進(jìn)入窗口 class MouseHandler extends MouseAdapter implements MouseMotionListener第4節(jié) Java事件處理 事件監(jiān)聽(tīng)器的實(shí)現(xiàn)方式 在事件處理過(guò)程中,事件監(jiān)聽(tīng)器類(lèi)必須實(shí)現(xiàn)事件監(jiān)聽(tīng)器接口或者繼承事件適配器類(lèi);注冊(cè)事件監(jiān)聽(tīng)器的語(yǔ)句通常在圖形用戶界面類(lèi)中,這兩個(gè)類(lèi)之間是需要有一定的關(guān)聯(lián)。通常事件監(jiān)聽(tīng)器類(lèi)的實(shí)現(xiàn)有四種常用的方法。外部類(lèi)作為事件監(jiān)聽(tīng)器 自身類(lèi)作為事件監(jiān)聽(tīng)器

29、內(nèi)部類(lèi)作為事件監(jiān)聽(tīng)器 匿名內(nèi)部類(lèi)作為事件監(jiān)聽(tīng)器若某個(gè)監(jiān)聽(tīng)程序接口中定義了5種抽象的事件處理方法,但程序只用到其中的一種方法,則在實(shí)現(xiàn)該接口的類(lèi)中,可以( )只實(shí)現(xiàn)感興趣的方法,而忽略其他方法將不感興趣的方法內(nèi)容設(shè)為空,而只具體實(shí)現(xiàn)所用到的方法不實(shí)現(xiàn)任何方法只實(shí)現(xiàn)其中的一些方法ABCD提交單選題在Java的事件處理模型中,事件監(jiān)聽(tīng)接口和事件適配器的關(guān)系是( )兩者無(wú)任何關(guān)系,但都可以為組件注冊(cè)事件監(jiān)聽(tīng)程序事件監(jiān)聽(tīng)的接口的用途更廣泛,而事件適配器用途較窄事件適配器是實(shí)現(xiàn)了相應(yīng)事件監(jiān)聽(tīng)接口的類(lèi),只是相應(yīng)方法的實(shí)現(xiàn)內(nèi)容為空事件適配器只是相應(yīng)事件監(jiān)聽(tīng)接口的子接口,內(nèi)含的方法數(shù)目更少,更易于實(shí)現(xiàn)ABCD提

30、交單選題第5節(jié) 常用Swing組件 Swing提供了20多種不同的組件。在使用不同的組件之前,需要了解它們的構(gòu)造方法、成員方法及可能要處理的事件類(lèi)。構(gòu)造方法:能夠正確地創(chuàng)建一個(gè)實(shí)例對(duì)象成員方法:能夠得心應(yīng)手地修改或獲得對(duì)象有關(guān)屬性值可能處理的事件類(lèi):能夠在相應(yīng)的事件方法中編寫(xiě)代碼來(lái)響應(yīng)用戶的操作 目前所有的實(shí)例所實(shí)現(xiàn)的GUI界面都很單一,大部分都只由容器和按鈕組件構(gòu)成,這種設(shè)計(jì)一定不會(huì)滿足應(yīng)用程序的設(shè)計(jì)需要。那么,其他的組件又怎么創(chuàng)建及使用呢?第5節(jié) 常用Swing組件JComponent類(lèi)常用的成員方法 第5節(jié) 常用Swing組件 標(biāo)簽常用構(gòu)造方法 JLabel(String text):創(chuàng)

31、建一個(gè)文本為text的標(biāo)簽,文字的默認(rèn)對(duì)齊方式是LEFT JLabel(String text,Icon icon,int horizontalAlignment):創(chuàng)建一個(gè)指定圖標(biāo)icon,文本為text的標(biāo)簽,并指定水平對(duì)齊方式常用成員方法void setText(String text):設(shè)置標(biāo)簽上顯示的文本信息void setFont(Font f):設(shè)置標(biāo)簽文字內(nèi)容的字體。Font類(lèi)構(gòu)造方法是Font(字體名字,字體樣式,字體大小)基本上不去對(duì)事件作出響應(yīng) 第5節(jié) 常用Swing組件JLabel label1=new JLabel(請(qǐng)輸入姓名:);JLabel label2=new

32、JLabel(請(qǐng)輸入密碼:,new ImageIcon(exit.gif),JLabel.RIGHT);label1.setFont(new Font(隸書(shū),Font.BOLD,20);label2.setForeground(Color.red);第5節(jié) 常用Swing組件 按鈕 常用構(gòu)造方法 JButton(String text):創(chuàng)建一個(gè)顯示內(nèi)容為text的按鈕JButton(String text, Icon icon):創(chuàng)建一個(gè)顯示內(nèi)容為text并帶有一個(gè)icon圖標(biāo)的按鈕常用成員方法void setActionCommand(StringactionCommand):設(shè)置此按鈕的

33、動(dòng)作命令void setMnemonic(intmnemonic):設(shè)置按鈕的快捷鍵,鍵值使用KeyEvent類(lèi)中定義的VK_XXX鍵之一指定單擊按鈕會(huì)觸發(fā)ActionEvent事件 第5節(jié) 常用Swing組件JButton b1=new JButton(確定);JButton b2=new JButton(關(guān)閉,new ImageIcon(exit.gif);b2.setMnemonic(KeyEvent.VK_B);b2.setActionCommand(exit);第5節(jié) 常用Swing組件 文本組件 在Swing中文本編輯組件主要有文本域(JTextField)、密碼域(JPasswo

34、rdField)及文本區(qū)(JTextArea)JTextField:只顯示單行可編輯文本,使用單一字體和顏色JPasswordField:是JTextField的子類(lèi),實(shí)現(xiàn)文本域的字符隱藏功能,常用來(lái)輸入密碼項(xiàng)JTextArea:可以顯示多行純文本。 JTextField構(gòu)造方法與JPasswordField類(lèi)似,以 JTextField為例來(lái)介紹 .第5節(jié) 常用Swing組件JTextField構(gòu)造方法 JTextField():創(chuàng)建一個(gè)空的文本域 JTextField(int columns):創(chuàng)建一個(gè)列數(shù)為columns的文本域 JTextField(String text):創(chuàng)建一個(gè)初

35、始文本為text的文本域 JTextField(String text, int columns):創(chuàng)建一個(gè)列數(shù)為columns,初始文本為text的文本域JTextField常用成員方法 void setText(String text):改變文本域中的文本內(nèi)容 String getText():獲取文本域中的文本內(nèi)容,以字符串的形式返回 void setEditable(boolean b):指定文本域的是否可以編輯,默認(rèn)為可編輯的第5節(jié) 常用Swing組件JPasswordField常用成員方法 void setEchoChar(char c):設(shè)置回顯字符,默認(rèn)的回顯字符是“*” ch

36、ar getPassword():獲取密碼框中的密碼 JTextField txtname =new JTextField(用戶名,10); JPasswordField pw1=new JPasswordField(10); JPasswordField pw2=new JPasswordField(10); pw2.setEchoChar(); str=txtname.getText(); /str 是字符串變量 txtname.setText(); 第5節(jié) 常用Swing組件JTextArea構(gòu)造方法 JTextArea():創(chuàng)建一個(gè)空的文本區(qū) JTextArea(int rows, i

37、nt cols):創(chuàng)建一個(gè)rows行,cols列的文本區(qū) JTextArea(String text):創(chuàng)建一個(gè)初始文本為text的文本區(qū) JTextArea(String text,int rows,int cols):創(chuàng)建一個(gè)rows行,cols列的文本區(qū),初始文本為text的文本區(qū)JTextArea常用成員方法 String getSelectedText():獲取選中的文本void setLineWrap(boolean b):決定輸入的文本能否在文本區(qū)的右邊界自動(dòng)換行,默認(rèn)情況下是不換行的第5節(jié) 常用Swing組件JTextArea ta1=new JTextArea(3,10);J

38、TextArea ta2=new JTextArea(3,10);JTextArea ta3=new JTextArea(3,10);JScrollPane jsp1=new JScrollPane(ta2);ta3.setLineWrap(true);第5節(jié) 常用Swing組件文本組件的事件在AWT中的文本組件內(nèi)容發(fā)生變化時(shí)會(huì)觸發(fā)TextEvent事件。然而,在Swing包中將對(duì)文本的監(jiān)視任務(wù)放入了Document中。當(dāng)文本內(nèi)容發(fā)生變化時(shí),會(huì)觸發(fā)DocumentEvent事件。(1)創(chuàng)建一個(gè)Document的接口對(duì)象(文本對(duì)象.getDocument()),(2)新建對(duì)象可以通過(guò)addDoc

39、umentListener方法注冊(cè)一個(gè)事件監(jiān)聽(tīng)器。在文本域和密碼域中輸入結(jié)束按回車(chē)時(shí),就會(huì)觸發(fā)ActionEvent事件。在文本域(JTextField)組件中,當(dāng)用戶輸入結(jié)束按Enter鍵時(shí)不會(huì)觸發(fā)的事件是( )。FousEventActionEventKeyEventTextListenerABCD提交單選題第5節(jié) 常用Swing組件 單選按鈕和復(fù)選框單選按鈕常用的構(gòu)造方法 JRadioButton (String text):創(chuàng)建一個(gè)有文本作為標(biāo)簽的單選按鈕JRadioButton(String text,boolean b)創(chuàng)建一個(gè)有文本作為標(biāo)簽,并設(shè)置初始狀態(tài)的單選按鈕單選按鈕常用的

40、成員方法boolean isSelected():獲得當(dāng)前按鈕的狀態(tài)。返回true時(shí)表示處于選中狀態(tài),反之則處于未選中狀態(tài)單擊單選按鈕或者復(fù)選框都會(huì)觸發(fā)ItemEvent事件 第5節(jié) 常用Swing組件JRadioButton rb1=new JRadioButton(男);JRadioButton rb2=new JRadioButton(女,true);ButtonGroup bg=new ButtonGroup();bg.add(rb1);bg.add(rb2);互斥的單選按鈕必須放在一個(gè)按鈕組類(lèi)(ButtonGroup )中第5節(jié) 常用Swing組件列表框 列表框(JList)用來(lái)提供

41、一組列表項(xiàng),從中可以選擇一項(xiàng)或者多項(xiàng)。常用構(gòu)造方法: JList ():創(chuàng)建一個(gè)沒(méi)有任何選項(xiàng)的列表框JList (Object listData):創(chuàng)建一個(gè)列表框,列表項(xiàng)內(nèi)容由數(shù)組對(duì)象listData決定JList (ListModel dataModel):創(chuàng)建一個(gè)列表框,列表項(xiàng)內(nèi)容由ListModel型參數(shù)dataModel指定String data = one, two, three, four;JList myList = new JList(data);第5節(jié) 常用Swing組件 用數(shù)組初始化的列表框中的內(nèi)容不能動(dòng)態(tài)地增加或者減少。JList組件將數(shù)據(jù)處理工作委托給ListModel

42、接口完成,需要用到DefaultListModel類(lèi)的方法來(lái)來(lái)完成。 DefaultListModel類(lèi)常用方法addElement(Object obj):添加元素 removeElement(Object obj):刪除元素 DefaultListModel dataModel=new DefaultListModel();dataModel.addElement(one); dataModel.addElement(two);JList myList = new JList(dataModel);第5節(jié) 常用Swing組件常用成員方法:Object getSelectedValue():獲得列表框中第一個(gè)被選定項(xiàng)的內(nèi)容int getSelectedIndex():獲得列表框中選定項(xiàng)的序號(hào)void setModel(ListModelmodel):重新設(shè)置ListModel列表框當(dāng)前選項(xiàng)發(fā)生變化時(shí),會(huì)觸發(fā)ListSelectionEvent事件;列表框也常常監(jiān)聽(tīng)MouseEvent事件,來(lái)響應(yīng)用戶點(diǎn)擊列表項(xiàng)的動(dòng)作。 JScrollPane jsp1=new JScrollPane(list1); list1.addMouseListener(new MouseAdapter() /匿名內(nèi)部類(lèi) publi

溫馨提示

  • 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)論