Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課件 第9章 Swing圖形用戶界面_第1頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課件 第9章 Swing圖形用戶界面_第2頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課件 第9章 Swing圖形用戶界面_第3頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課件 第9章 Swing圖形用戶界面_第4頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)-課件 第9章 Swing圖形用戶界面_第5頁(yè)
已閱讀5頁(yè),還剩48頁(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圖形用戶界面1AWT組件與SWING組件概述Java早期進(jìn)行用戶界面設(shè)計(jì)時(shí),使用java.awt包中提供的類(lèi),比如:Button、TextField等組件類(lèi).“awt”就是AbstracWindowToolkit。Java2推出之后,增加了一個(gè)新的javax.swing包,該包提供了功能更為強(qiáng)大的用來(lái)設(shè)計(jì)GUI界面的類(lèi)。awt包中的類(lèi)創(chuàng)建的組件習(xí)慣上稱作重組件,當(dāng)用awt包中的Button類(lèi)創(chuàng)建一個(gè)按鈕組件時(shí),都有一個(gè)相應(yīng)的本地組件在為它工作(稱為它的同位體)。AWT組件的設(shè)計(jì)原理是把與顯示組件有關(guān)的許多工作和處理組件事件的工作交給相應(yīng)的本地組件,因此我們把有同位體的組件稱為重量組件.缺點(diǎn):程序的外觀在不同的平臺(tái)上可能有所不同,而且重量組件的類(lèi)型也不能滿足GUI設(shè)計(jì)的需要.如:不可能把一副圖象添加到AWT按鈕上或AWT標(biāo)簽上,因?yàn)锳WT按鈕或標(biāo)簽外觀繪制是由本地的對(duì)等組件,即同位體來(lái)完成的,而同位體可能是用C++編寫(xiě)的,它的行為是不能被Java擴(kuò)展的。使用AWT進(jìn)行GUI設(shè)計(jì)可能會(huì)消耗大量的系統(tǒng)資源。swing包提供了更加豐富的、功能強(qiáng)大的組件,稱為swing組件,其中大部分組件是輕量組件,沒(méi)有同位體。swing組件的輕組件在設(shè)計(jì)上和AWT完全不同,輕組件把與顯示組件有關(guān)的許多工和處理組件事件的工作交給相應(yīng)的UI代表來(lái)完成,這些UI代表是用Java語(yǔ)言編寫(xiě)的類(lèi),這些類(lèi)被增加到Java的運(yùn)行環(huán)境中,因此組件的外觀不依賴平臺(tái),不僅在不同平臺(tái)上的外觀是相同的,而且較重量組件而言有更高的性能。

JComponent類(lèi)的部分子類(lèi)以及JFrame類(lèi)和JDialog類(lèi)ContainerJFrameJDialogWindowFrameDialogJComponentJButtonJTextFieldJTeatAreaJTreeJPanelJTableComponent由Component子類(lèi)創(chuàng)建的對(duì)象稱為一個(gè)組件。由Container子類(lèi)創(chuàng)建的對(duì)象稱為一個(gè)容器??梢韵蛉萜魈砑咏M件。Container類(lèi)方法:add()容器removeAll()方法可以移掉容器中的全部組件;用remove(Componentc)方法可以移掉容器中參數(shù)指定的組件。每當(dāng)容器添加新的組件或移掉組件時(shí),應(yīng)該讓容器調(diào)用validate方法,以保證容器中的組件能正確顯示出來(lái)。容器本身也是一個(gè)組件,可以把一個(gè)容器添加到另一個(gè)容器中實(shí)現(xiàn)容器的嵌套。容器類(lèi)(Container)和組件類(lèi)(Component)swing包中有四個(gè)最重要的類(lèi):

JApplet、JFrame、JDialog和JComponent。JFrame、JApplet、JDialog都是重組件,即有同位體的組件,可以和操作系統(tǒng)交互信息.輕組件必須在這些重量容器中繪制自己,習(xí)慣上稱這些容器為Swing的底層容器。返回2JFrame窗體JFrame類(lèi)常用方法如下:JFrame()——?jiǎng)?chuàng)建一個(gè)無(wú)標(biāo)題的窗口。JFrame(Strings)——?jiǎng)?chuàng)建一個(gè)標(biāo)題為s的窗口。setBounds(inta,intb,intwidth,intheight)——設(shè)置出現(xiàn)在屏幕上時(shí)的初始位置為(a,b),即距屏幕左面a個(gè)像素、距屏幕上方b個(gè)像素;窗口的寬是width,高是height。setSize(intwidth,intheight)——設(shè)置窗口的大小,窗口在屏幕出現(xiàn)是默認(rèn)位置是(0,0)。setVisible(booleanb)——設(shè)置窗口是可見(jiàn)還是不可見(jiàn),窗口默認(rèn)是不可見(jiàn)的。JDK1.4或之前的版本要求如下:不可以把組件直接添加到JFame窗體中。JFame窗體含有一個(gè)稱為內(nèi)容面板的容器,應(yīng)當(dāng)把組件添加到內(nèi)容面板中(內(nèi)容面板也是重容器)。不能為JFame窗體設(shè)置布局,而應(yīng)當(dāng)為JFame窗體的內(nèi)容面板設(shè)置布局。內(nèi)容面板的默認(rèn)布局是BorderLayout布局。JFame通過(guò)getContentPane()方法得到它的內(nèi)容面板。3菜單組件菜單放在菜單條里,菜單項(xiàng)放在菜單里。(1)JMenuBar

JComponent類(lèi)的子類(lèi)JMenubar是負(fù)責(zé)創(chuàng)建菜單條的,即JMenubar的一個(gè)實(shí)例就是一個(gè)菜單條。

JFrame類(lèi)有一個(gè)將菜單條放置到窗口中的方法:setJMenuBar(JMenuBarmenubar);

注意:只能向窗口添加一個(gè)菜單條。(2)JMenuJMenu(Strings)建立一個(gè)指定標(biāo)題菜單,標(biāo)題由參數(shù)s確定。add(MenuItemitem)向菜單增加由參數(shù)item指定的菜單選項(xiàng)對(duì)象。add(Strings)向菜單增加指定的選項(xiàng)。JMenuItemgetItem(intn)得到指定索引處的菜單選項(xiàng)。getItemCount()得到菜單選項(xiàng)數(shù)目。

(3)JMenuItem菜單項(xiàng),菜單項(xiàng)將被放在菜單里

JMenuItem是JMenu的父類(lèi),負(fù)責(zé)創(chuàng)建菜單項(xiàng)JMenuItem(Strings)構(gòu)造有標(biāo)題的菜單JMenuItem(Stringtext,Iconicon)構(gòu)造有標(biāo)題和圖標(biāo)的菜單項(xiàng)setEnabled(booleanb)設(shè)置當(dāng)前菜單項(xiàng)是否可被選擇。StringgetLabel()得到菜單選項(xiàng)的名字。setAccelerator(KeyStrokekeyStroke):設(shè)置快捷鍵

嵌入子菜單JMenu是JMenuItem的子類(lèi),因此菜單項(xiàng)本身還可以是一個(gè)菜單,稱這樣的菜單項(xiàng)為子菜單。為了使得菜單項(xiàng)有一個(gè)圖標(biāo),可以用圖標(biāo)類(lèi)Icon聲明一個(gè)圖標(biāo),然后使用其子類(lèi)ImageIcon類(lèi)創(chuàng)建一個(gè)圖標(biāo),如:

Iconicon=newImageIcon(“dog.gif”);例子1是一個(gè)含有菜單的窗口。

4布局設(shè)計(jì)控制組件在容器中的位置java.awt包中:FlowLayout、BorderLayoutCardLayout、GridLayoutjavax.swing.border包中:BoxLayout對(duì)于JFrame,默認(rèn)布局是BorderLayout。setLayout:設(shè)置自己的布局1.FlowLayout布局利用構(gòu)造方法可以創(chuàng)建一個(gè)居中對(duì)齊的布局對(duì)象。例如:

FlowLayoutflow=newFlowLayout();con.setLayout(flow);setHgap(inthgap)方法和setVgap(intvgap)可以重新設(shè)置布局的水平間隙和垂直間隙。例子2JFrame使用FlowLayout布局放置10個(gè)組件。是Window型容器的默認(rèn)布局,如JFrame、JDialog都是Window類(lèi)的間接子類(lèi),它們的默認(rèn)布局都是BorderLayout布局。容器使用BorderLayout布局,那么容器空間簡(jiǎn)單地劃分為東、西、南、北、中五個(gè)區(qū)域。一個(gè)組件加入都應(yīng)該指明把這個(gè)組件添加在哪個(gè)區(qū)域中BorderLayout中的靜態(tài)常量CENTER、NORTH、SOUTH、WEST、EAST表示.2.BorderLayout布局添加到某個(gè)區(qū)域的組件將占據(jù)整個(gè)這個(gè)區(qū)域。每個(gè)區(qū)域只能放置一個(gè)組件,如果向某個(gè)已放置了組件的區(qū)域再放置一個(gè)組件,那么先前的組件將被后者替換掉。例子3使用了BorderLayout布局3.CardLayout布局使用CardLayout的容器可以容納多個(gè)組件,但是實(shí)際上同一時(shí)刻容器只能從這些組件中選出一個(gè)來(lái)顯示,這個(gè)被顯示的組件將占據(jù)所有的容器空間。JTabbedPane創(chuàng)建的對(duì)象是一個(gè)輕容器,稱作選項(xiàng)卡窗格。選項(xiàng)卡窗格的默認(rèn)布局是CardLayout卡片式布局。4布局設(shè)計(jì)選項(xiàng)卡窗格可以使用:

add(Stringtext,Componentc);該方法將組件c添加到容器當(dāng)中,并指定和該組件c對(duì)應(yīng)的選項(xiàng)卡的文本提示是text。例子4中,在選項(xiàng)卡窗格中添加了5個(gè)按鈕,并設(shè)置了相對(duì)應(yīng)的選項(xiàng)卡的文本提示,然后將選項(xiàng)卡窗格添加到窗體中。4.GridLayout布局

GridLayout是使用較多的布局編輯器,其基本布局策略是把容器劃分成若干行乘若干列的網(wǎng)格區(qū)域,組件就位于這些劃分出來(lái)的小格中。(1)使用GridLayout的構(gòu)造方法GridLayout(intm,intn)創(chuàng)建布局對(duì)象,指定劃分網(wǎng)格的行數(shù)m和列數(shù)n,例如:GridLayoutgrid=newnewGridLayout(10,8);

(2)使用GridLayout布局的容器調(diào)用方法add將組件加入容器,組件進(jìn)入容器的順序?qū)凑盏谝恍械谝粋€(gè)、第一行第二個(gè)、…第一行最后一個(gè)、第二行第一個(gè)、…最后一行第一個(gè)、…最后一行最后一個(gè)。

5.BoxLayout布局(盒式布局)Box類(lèi)是Container類(lèi)的一個(gè)子類(lèi),創(chuàng)建的容器稱作一個(gè)盒式容器,盒式容器的的默認(rèn)布局是盒式布局,而且不允許更改盒式容器的布局。在策劃程序的布局時(shí),可以利用容器的嵌套,將某個(gè)容器嵌入幾個(gè)盒式容器,達(dá)到你的布局目的。使用盒式布局的容器將組件排列在一行或一列行型布局中添加的組件的上沿在同一水平線上。列型布局中添加的組件的左沿在同一垂直線上。Box.createHorizontalBox()

獲得一個(gè)具有行型盒式布局的盒式容器;Box.createVerticalBox()

獲得一個(gè)具有列型盒式布局的盒式容器。Box.createHorizontalStrut(intwidth)可以得到一個(gè)不可見(jiàn)的水平Struct類(lèi)型對(duì)象,稱做水平支撐。該水平支撐的高度為0,寬度是width。Box.createVertialStrut(intheight)可以得到一個(gè)不可見(jiàn)的垂直Struct類(lèi)型對(duì)象,稱做垂直支撐。參數(shù)height決定垂直支撐的高度,垂直支撐的寬度為0。例子5中兩個(gè)列型盒式容器:boxV1、boxV2一個(gè)行行盒式容器baseBox在列型盒式容器的組件之間添加垂直支撐,控制組件之間的距離,將boxV1、boxV2添加到baseBox中,并在它倆之間添加了水平支撐。

6.null布局可以把一個(gè)容器的布局設(shè)置為null布局(空布局)??詹季秩萜骺梢詼?zhǔn)確地定位組件在容器的位置和大小。setBounds(inta,intb,intwidth,intheight)方法是所有組件都擁有的一個(gè)方法,組件調(diào)用該方法可以設(shè)置本身的大小和在容器中的位置。例如,p是某個(gè)容器:

p.setLayout(null);

把p的布局設(shè)置為空布局。

向空布局的容器p添加一個(gè)組件c需要兩個(gè)步驟首先使用add(c)方法向容器添加組件,然后組件c再調(diào)用setBounds(inta,intb,intwidth,intheight)方法設(shè)置該組件在容器中的位置和本身的大小,組件都是一個(gè)矩形結(jié)構(gòu),方法中的參數(shù)a,b是被添加的組件c的左上角在容器中的位置坐標(biāo),即該組件距容器左面a個(gè)像素,距容器上方b個(gè)像素;weidth,height是組件c的寬和高。

5中間容器1.JPanel面板經(jīng)常使用JPanel創(chuàng)建一個(gè)面板,再向這個(gè)面板添加組件,然后把這個(gè)面板添加到底層容器或其他中間容器中。JPanel面板的默認(rèn)布局是FlowLayout布局。2.JScrollPane滾動(dòng)窗格可以把一個(gè)組件放到一個(gè)滾動(dòng)窗格中,然后通過(guò)滾動(dòng)條來(lái)觀察這個(gè)組件。例如,JTextArea不自帶滾動(dòng)條,因此我們就需要把文本區(qū)放到一個(gè)滾動(dòng)窗格中??梢允褂肑ScorollPane的構(gòu)造方法JScorollPane(componentc)構(gòu)造一個(gè)滾動(dòng)窗格。

3.JSplitPane拆分窗格顧名思義,拆分窗格就是被分成兩部分的容器。拆分窗格有兩種類(lèi)型:水平拆分和垂直拆分。水平拆分窗口用一條拆分線把容器分成左右兩部分,左面放一個(gè)組件,右面放一個(gè)組件,拆分線可以水平移動(dòng)。垂直拆分30AWT事件模型抽象窗口工具包(AWT)是一組類(lèi),用來(lái)創(chuàng)建圖形用戶界面,并能夠通過(guò)鍵盤(pán)和鼠標(biāo)響應(yīng)用戶的操作。兩種常用容器類(lèi):框架(Frame類(lèi))和面板(Panel類(lèi))AWT支持下列類(lèi)型的組件:標(biāo)簽、文本域、文本區(qū)、按鈕、復(fù)選框、列表框等。布局管理器類(lèi)提供控制GUI組件物理布局的一種方式。31事件控制的要點(diǎn)Java事件處理方法是基于授權(quán)事件模型事件源生成事件并將其發(fā)送至一個(gè)或多個(gè)監(jiān)聽(tīng)器監(jiān)聽(tīng)器簡(jiǎn)單地等待,直到它收到一個(gè)事件。一旦事件被接受,監(jiān)聽(tīng)器將處理這些事件,然后返回。3233事件源事件源是一個(gè)生成事件的對(duì)象一個(gè)事件源可能會(huì)生成不同類(lèi)型的事件事件源提供了一組方法,用于為事件注冊(cè)一個(gè)或多個(gè)監(jiān)聽(tīng)器。publicvoidadd<EventType>Listener(TypeListenere)34AWT采取的事件控制過(guò)程監(jiān)聽(tīng)器對(duì)象屬于一個(gè)類(lèi)的實(shí)例,這個(gè)類(lèi)實(shí)現(xiàn)了一個(gè)特殊的接口,名為“監(jiān)聽(tīng)者接口”事件源將在發(fā)生事件時(shí)向所有注冊(cè)的監(jiān)聽(tīng)器發(fā)送事件對(duì)象。監(jiān)聽(tīng)器對(duì)象使用事件對(duì)象中的信息來(lái)確定它們對(duì)事件做出響應(yīng)。publicclassMyEventTestextendsPanel{ButtonmyButton=newButton("藍(lán)色");...//創(chuàng)建面板或其他

GUI組件

MyListenermyAction=newMyListener();MyButton.addActionListener(myAction);

privateclassMyListenerimplementsActionListener{publicMyListener(){...//初始化

}publicvoidactionPerformed(ActionEventevent){...//需要為事件進(jìn)行的操作

}}}實(shí)現(xiàn)了ActionListener接口的監(jiān)聽(tīng)器實(shí)現(xiàn)了actionPerformed方法,以便根據(jù)參數(shù)ActionEvent

對(duì)象的信息對(duì)事件做出響應(yīng)為按鈕事件注冊(cè)監(jiān)聽(tīng)器36事件體系結(jié)構(gòu)FocusEventAWTEventActionEventAdjustmentEventComponentEventTextEventItemEventContainerEventInputEventWindowEventPaintEventKeyEventMouseEventEventObjectAWT將事件分為底層事件和語(yǔ)義事件。語(yǔ)義事件是表示用戶動(dòng)作的時(shí)間。

ActionEvent是一個(gè)語(yǔ)義事件。底層事件時(shí)形成那些事件的事件

調(diào)節(jié)滾動(dòng)條是一個(gè)語(yǔ)義事件,但是拖動(dòng)鼠標(biāo)是一個(gè)底層事件。

3738AWT事件類(lèi)型2-1事件類(lèi)說(shuō)明事件源ActionEvent

通常按下按鈕,雙擊列表項(xiàng)或選中一個(gè)菜單項(xiàng)時(shí),就會(huì)生成此事件。Button、List、MenuItem、TextField

AdjustmentEvent

操縱滾動(dòng)條時(shí)會(huì)生成此事件。ScrollbarComponentEvent

當(dāng)一個(gè)組件移動(dòng)、隱藏、調(diào)整大小或成為可見(jiàn)時(shí)會(huì)生成此事件。ComponentItemEvent單擊復(fù)選框或列表項(xiàng)時(shí),或者當(dāng)一個(gè)選擇框或一個(gè)可選菜單的項(xiàng)被選擇或取消時(shí)生成此事件。Checkbox、CheckboxMenuItem、Choice、ListFocusEvent組件獲得或失去鍵盤(pán)焦點(diǎn)時(shí)會(huì)生成此事件。Component39AWT事件類(lèi)型2-2事件類(lèi)說(shuō)明事件源KeyEvent

接收到鍵盤(pán)輸入時(shí)會(huì)生成此事件。ComponentMouseEvent

拖動(dòng)、移動(dòng)、單擊、按下或釋放鼠標(biāo)或在鼠標(biāo)進(jìn)入或退出一個(gè)組件時(shí),會(huì)生成此事件。ComponentContainerEvent

將組件添加至容器或從中刪除時(shí)會(huì)生成此事件。ContainerTextEvent在文本區(qū)或文本域的文本改變時(shí)會(huì)生成此事件。TextField、TextAreaWindowEvent當(dāng)一個(gè)窗口激活、關(guān)閉、失效、恢復(fù)、最小化、打開(kāi)或退出時(shí)會(huì)生成此事件。

Window40監(jiān)聽(tīng)器接口監(jiān)聽(tīng)器通過(guò)實(shí)現(xiàn)java.awt.event包中定義的一個(gè)或多個(gè)接口來(lái)創(chuàng)建。在發(fā)生事件時(shí),事件源將調(diào)用監(jiān)聽(tīng)器定義的相應(yīng)方法。有興趣接收事件的任何監(jiān)聽(tīng)器類(lèi)都必須實(shí)現(xiàn)監(jiān)聽(tīng)器接口。

41監(jiān)聽(tīng)器接口列表2-1事件監(jiān)聽(tīng)器

方法

ActionListener

actionPerformed

AdjustmentListener

adjustmentValueChanged

ComponentListener

componentResizedcomponentMovedcomponentShowncomponentHidden

ContainerListener

componentAddedcomponentRemoved

FocusListener

focusLost、focusGained

ItemListener

itemStateChanged

42監(jiān)聽(tīng)器接口列表2-2事件監(jiān)聽(tīng)器

方法

KeyListener

keyPressed、keyReleasedkeyTyped

MouseListener

mouseClicked、mouseEnteredmouseExited、mousePressedmouseReleased

MouseMotionListener

mouseDragged、mouseMoved

TextListener

textChanged

WindowListener

windowActivated、windowDeactivatedwindowClosed、windowClosingwindowIconified、windowDeiconifiedwindowOpened

43適配器類(lèi)適配器類(lèi)

事件監(jiān)聽(tīng)器接口

ComponentAdapter

ComponentListener

ContainerAdapter

ContainerListener

FocusAdapter

FocusListener

KeyAdapter

KeyListener

MouseAdapter

MouseListener

MouseMotionAdapter

MouseMotionListener

WindowAdapter

WindowListener

為了使事件處理變得簡(jiǎn)單,Java為具有多個(gè)方法的監(jiān)聽(tīng)器接口提供適配器類(lèi)。適配器類(lèi)實(shí)現(xiàn)并提供了一個(gè)事件監(jiān)聽(tīng)器接口中的所有的方法,但這些方法都是空方法。privateclassMyMouseAdapterextendsMouseAdapter{privateColorbgColor;

publicMyMouseAdapter(Colorc){bgColor=c;}

publicvoidmouseClicked(MouseEventmevent){setBackground(bgColor);repaint();

}}

44任何GUI對(duì)象的獲得或失去焦點(diǎn)都被視為焦點(diǎn)事件,并且事件源必須向事件監(jiān)聽(tīng)器通知事件對(duì)象已失去或已獲得焦點(diǎn)。焦點(diǎn)監(jiān)聽(tīng)器需要實(shí)現(xiàn)兩個(gè)方法:focusGained和focusLost。要進(jìn)行錯(cuò)誤檢查或數(shù)據(jù)校驗(yàn)時(shí),對(duì)焦點(diǎn)的捕捉就顯得尤其重要。焦點(diǎn)事件45焦點(diǎn)事件示例publicvoidfocusLost(FocusEventevent){if(event.getComponent()==ccField&&!event.isTemporary()){if(!checkFormat(ccField.getText()))

ccField.requestFocus();}}實(shí)現(xiàn)了當(dāng)捕捉到失去焦點(diǎn)事件時(shí)如何響應(yīng)檢驗(yàn)失去焦點(diǎn)的組件中的文本格式是否正確如果格式不正確,將焦點(diǎn)移回到該組件46窗口事件當(dāng)一個(gè)窗口被激活、禁止、關(guān)閉、正在關(guān)閉、最小化、恢復(fù)、打開(kāi)時(shí)將生成窗口事件。需要實(shí)現(xiàn)的方法如下:windowActivated、windowClosedwindowClosing、windowDeactivatedwindowDeiconified、windowIconifiedwindowOpened窗口事件示例classMyFrameextendsFrame{

booleanw;

publicMyFrame(){

w=false;

setTitle("測(cè)試適配器類(lèi)");

setSize(300,200);

MyPanelpanel=newMyPanel();

add(panel);

addWindowListener(newMyWindowAdapter());}

privateclassMyWindowAdapterextendsWindowAdapter{

publicvoidwindowClosing(WindowEventwevent){if(w)dispose();elseSystem.exit(0);}}}實(shí)現(xiàn)了windowClosing方法,以響應(yīng)窗口關(guān)閉時(shí)的事件

importjava.awt.*;

importjava.awt.event.*;

publicclassMyAdapterDemo{publicstaticvoidmain(String[]args){MyFramefrm=newMyFrame();frm.show();}}

48

在按下或釋放鍵盤(pán)上的一個(gè)鍵時(shí),將生成鍵盤(pán)事件。

keyEvent類(lèi)包含用來(lái)表示按下或點(diǎn)擊的鍵的常量。

生成keyEvent時(shí)將調(diào)用keyListener。如果程序需要處理特殊的鍵,如方向鍵,需要通過(guò)調(diào)用keyPressed()方法來(lái)處理。鍵盤(pán)事件publicvoidkeypressed(keyEventk){intkeyCode=k.getKeyCode();if(keyCode==k.VK_RIGHT&&k.isShiftDown()){...}}檢測(cè)用戶是否按下了Shift+右箭頭鍵鍵盤(pán)事件示例classMyPanelextendsPanel{publicMyPanel(){TextFieldtField=newTextField(20);add(tField);

MyKeyAdapterbAction=newMyKeyAdapter();tField.addKeyListener(bAction);}

privateclassMyKeyAdapterextendsKeyAdapter{

publicvoidkeyPressed(KeyEventkevent){setBackground(Color.blue);repaint();}

溫馨提示

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