




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言程序設(shè)計(jì)
第八章swing圖形用戶(hù)界面
(GUI)編程講授人:傅曉陽(yáng)教授本章課程綱要Swing高級(jí)編程事件處理組件與布局√DavidFu本課程綱要布局管理器
swing組件概述
組件與容器
√
組件與布局DavidFu組件與容器圖形用戶(hù)界面(GUI)數(shù)據(jù)的圖形顯示形式友好的交互方式簡(jiǎn)化計(jì)算機(jī)軟件的學(xué)習(xí)過(guò)程GUI組件重量級(jí)組件------AWT輕量級(jí)組件------Swing,SWT,JFace,jigloo…DavidFu組件與容器早期版本的GUI組件所在的包:java.awt圖形用戶(hù)界面(GUI)可以通過(guò)鍵盤(pán)或鼠標(biāo)來(lái)響應(yīng)用戶(hù)的操作。抽象窗口工具包(AWT)是一組Java類(lèi),此組Java類(lèi)允許創(chuàng)建圖形用戶(hù)界面(GUI)。與平臺(tái)相關(guān)性較強(qiáng)DavidFu組件與容器SwingGUI組件所在的包:javax.swingSwing組件的平臺(tái)相關(guān)性較小(lightweight)Java1.2引入稱(chēng)為Swing的新的GUI組件庫(kù)。
Swing包括javax.swing包及其子包。盡管Swing獨(dú)立于AWT,但它是依照基本的AWT類(lèi)實(shí)現(xiàn)的。每個(gè)swing組件都由MVC三個(gè)部分組成
DavidFu本課程綱要布局管理器
swing組件概述√
組件與容器組件與布局DavidFu
swing組件繼承關(guān)系框圖
DavidFu頂層容器和中間容器頂層容器類(lèi)主要包括:JApplet類(lèi):小應(yīng)用程序主要用于設(shè)計(jì)嵌入到網(wǎng)頁(yè)的程序模塊,通過(guò)網(wǎng)頁(yè)瀏覽器運(yùn)行,實(shí)現(xiàn)一個(gè)小功能JFrame類(lèi):窗體框架主要實(shí)現(xiàn)一個(gè)帶邊界框架的windows標(biāo)準(zhǔn)的圖形用戶(hù)界面。JDialog類(lèi):對(duì)話(huà)框窗口,通常將窗體框架作為父窗口,創(chuàng)建對(duì)話(huà)框子窗口。對(duì)話(huà)框分為模式對(duì)話(huà)框和非模式對(duì)話(huà)框。
DavidFu頂層容器和中間容器中間容器面板(JPanel)滾動(dòng)窗格(JScrollPane)分體窗格(JSplitPane)選項(xiàng)卡窗格(JTabbedPane)工具條(JToolBar)
DavidFu頂層容器和中間容器中間容器面板(JPanel)滾動(dòng)窗格(JScrollPane)分體窗格(JSplitPane)選項(xiàng)卡窗格(JTabbedPane)工具條(JToolBar)
DavidFuJLabel標(biāo)簽組件標(biāo)簽組件用于顯示非編輯文本信息或者圖標(biāo)等圖片信息javax.swing.Jlabel的三個(gè)構(gòu)造方法為:publicJlabel(Stringtext)publicJlabel(Iconimage)publicJlabel(Stringtext,Iconimage,int
horizontalAlignment)DavidFuJLabel標(biāo)簽組件VoidsetText(Stringtext)設(shè)置標(biāo)簽文本信息。StringgetText()獲取標(biāo)簽文本信息。VoidsetIcon(Iconicon)設(shè)置圖標(biāo)標(biāo)簽。IcongetIcon()獲取標(biāo)簽上的圖標(biāo)。VoidsetHorisonalAlignment(intalignment)設(shè)置水平對(duì)齊方式。VoidsetVerticalAlignment(intalignment)設(shè)置垂直對(duì)齊方式。VoidsetToolTipText(Stringtext)設(shè)置標(biāo)簽提示信息,當(dāng)將鼠標(biāo)指針在標(biāo)簽上停留片刻后,會(huì)出現(xiàn)一個(gè)標(biāo)簽的提示信息。DavidFu文本框(JTextField)文本框組件用于輸入單行文本信息JTextField()JTextField(intcolumns)JTextField(Stringtext)JTextField(String
text,intcolumns)DavidFuJButton按鈕JButton通常是用來(lái)觸發(fā)某項(xiàng)命令功能組件Jbutton的主要構(gòu)造方法為:publicJbutton(Stringtext)publicJbutton(Iconicon)publicJbutton(Stringtext,Iconicon)參數(shù)text指定按鈕的功能文本信息,使用參數(shù)icon指定圖標(biāo)作為按鈕的功能信息DavidFuJRadioButton單選框JRadioButton是單選按鈕組件
JRadioButton單選框的主要構(gòu)造方法為:PublicJRadioButton(Iconicon)PublicJRadioButton(Icon
icon,booleanselected)PublicJRadioButton(Stringtext)PublicJRadioButton(Stringtextbooleanselected)PublicJRadioButton(String
text,Iconicon)PublicJRadioButton(String
text,Iconicon,booleanselected)DavidFuJCheckBox復(fù)選框復(fù)選框JcheckBox的主要構(gòu)造方法為:publicJCheckBox(Iconicon)publicJCheckBox(Iconicon,Booleanselected)publicJCheckBox(String
text,Iconicon)publicJCheckBox(Stringtext)publicJCheckBox(Stringtext,Booleanselected)publicJCheckBox(String
text,Iconicon,Booleanselected)DavidFu按鈕的主要成員方法VoiddoClick()在程序中使用該方法代替鼠標(biāo)點(diǎn)擊按鈕的動(dòng)作StringgetActionCommand()獲取按鈕的動(dòng)作命令,主要用于命令按鈕VoidsetActionCommand(StringactionCommand)設(shè)置命令按鈕的動(dòng)作命令字符串booleanisSelected()判斷選擇按鈕是否選中voidsetSelected(booleanselected)設(shè)置按鈕的狀態(tài)VoidsetHorizonalAlignment(intalignment)設(shè)置按鈕上文本和圖標(biāo)的水平對(duì)齊方式VoidsetVerticalAlignment(intalignment)設(shè)置按鈕上的文本和圖標(biāo)的垂直對(duì)齊方式DavidFuJTextAreaJTextArea文本區(qū)與JTextField文本框的不同在于JTextArea可以編輯多行文本,而JTextField文本框只能編輯一行文本JtextArea的主要構(gòu)造方法為:PublicJtextArea()PublicJtextArea(String
text,introws,intcolumns)PublicJtextArea(introws,intcolumns)DavidFuJScrollPane文本區(qū)沒(méi)有自動(dòng)滾屏的功能,當(dāng)輸入文本超出文本區(qū)范圍時(shí),需要將文本區(qū)添加到滾動(dòng)窗格中,才能實(shí)現(xiàn)滾動(dòng)瀏覽更多文本的功能滾動(dòng)窗格JscrollPane
的主要構(gòu)造方法為:publicJscrollPane(Componentc)其中,參數(shù)c是指定需要加入滾動(dòng)條功能的組件,例如文本區(qū)。具體用法如下:
JTextArea
jTextarea=newJTextArea(5,15);
JScrollPanesp=newJScrollPane(jTextarea);DavidFuJList列表框可以顯示一系列的列表項(xiàng),并可以從中選擇一項(xiàng)或多項(xiàng)。列表框不僅可以存放字符串項(xiàng),也可以存放任何類(lèi)型的對(duì)象。用戶(hù)可以對(duì)列表框中的項(xiàng)目進(jìn)行添加和刪除。列表框的構(gòu)造方法為:publicJlist(ListModel
dataModel)publicJlist(Object[]listData)publicJlist(Vector<?>listData)
DavidFuJCombBox組合框(JComboBox)可以從下拉式的列表框中選取其中的列表項(xiàng)類(lèi)JComboBox中的方法getSelectedIndex()返回當(dāng)前被選中的項(xiàng)setMaximumRowCount(n)設(shè)置最多顯示列表項(xiàng)的項(xiàng)數(shù)滾動(dòng)條(Scrollbar)會(huì)自動(dòng)加上參見(jiàn)例題TestComponentDavidFu本課程綱要布局管理器
√
swing組件概述
組件與容器組件與布局DavidFu布局管理器常用的布局管理器為:流式布局(FlowLayout)方位布局(BorderLayout)網(wǎng)格布局(GridLayout)網(wǎng)格塊布局(GridBagLayout)卡片布局(CardLayout)盒式布局(BoxLayout)
DavidFuswing容器默認(rèn)布局方式容器種類(lèi)默認(rèn)布局方式j(luò)avax.swing.JAppletBorderLayout方位布局Javax.swingJFrameBorderLayout方位布局Javax.swing.JDialogBorderLayout方位布局Javax.swing.JpanelFlowLayout流式布局DavidFu流式布局FlowLayout流式布局的特點(diǎn)是按照由左向右、由上向下的順序排列組件FlowLayout類(lèi)的構(gòu)造方法為:(1)publicFlowLayout()(2)publicFlowLayout(intalign)(3)publicFlowLayout(intalign,int
hgap,int
vgap)DavidFu流式布局FlowLayoutDavidFu方位布局BorderLayout方位布局可以將容器分為5個(gè)區(qū)域:北區(qū)、南區(qū)、東區(qū)、西區(qū)和中區(qū)。這五個(gè)區(qū)域只能安排5個(gè)組件,分為上北下南,左東右西。BorderLayout將根據(jù)容器大小對(duì)組件進(jìn)行布局。北區(qū)和南區(qū)組件可以在水平方向上進(jìn)行拉伸;東區(qū)和西區(qū)組件可以在垂直方向上進(jìn)行拉伸;中區(qū)組件在水平和垂直方向上都可以進(jìn)行拉伸,從而填充所有剩余空間。BorderLayout類(lèi)的構(gòu)造方法為:publicBorderLayout()publicBorderLayout(int
hgap,int
vgap)
DavidFu方位布局BorderLayoutDavidFu網(wǎng)格布局GridLayout網(wǎng)格布局將容器分成若干尺寸大小相等的單元格。用戶(hù)可以將每個(gè)組件布局到每個(gè)單元格中,組件的大小受到單元格大小的限制。網(wǎng)格布局GridLayout類(lèi)的構(gòu)造方法為:publicGridLayout()publicGridLayout(introws,intcols)publicGridLayout(int
rows,int
cols,int
hgap,int
vgap)DavidFu網(wǎng)格布局GridLayoutDavidFu卡片布局CardLayout卡片布局管理器(CardLayout)設(shè)置的容器可以布局多個(gè)組件,但這些組件都是疊加到一起,仿佛一幅疊加到一起的“撲克牌”,每次只能看到一個(gè)組件的內(nèi)容。
CardLayout類(lèi)的構(gòu)造方法為:publicCardLayout()publicCardLayout(int
hap,int
vgap)DavidFu卡片布局CardLayoutDavidFu箱式布局BoxLayoutBoxLayout類(lèi)可以設(shè)置多個(gè)組件沿水平和垂直方向排列,好像港口中的“集裝箱”排列一樣,因此稱(chēng)為箱式布局。對(duì)于箱式布局,容器大小發(fā)生變化時(shí),組件所占用的空間不會(huì)發(fā)生改變,當(dāng)組件的寬度超出了容器的寬度或高度時(shí),組件也不會(huì)換行或換列,而是沿著原來(lái)的方向保持“鋼性”排列BoxLayout類(lèi)的構(gòu)造方法為:PublicBoxLayout(Containerc,intaxis)DavidFu箱式布局BoxLayoutDavidFu本章課程綱要Swing高級(jí)編程事件處理√組件與布局DavidFu本課程綱要鼠標(biāo)事件處理
點(diǎn)擊事件處理java事件處理模型
√
事件處理鍵盤(pán)和焦點(diǎn)事件DavidFujava事件處理模型事件處理模型由三個(gè)基本要素組成:事件源:能夠產(chǎn)生事件響應(yīng)的容器或組件對(duì)象,如文本框、按鈕等。事件對(duì)象:由事件源自動(dòng)產(chǎn)生的事件類(lèi)對(duì)象,封裝了事件的相關(guān)信息。事件監(jiān)聽(tīng)器:實(shí)現(xiàn)了監(jiān)聽(tīng)器接口的類(lèi),該類(lèi)具體實(shí)現(xiàn)了監(jiān)聽(tīng)器接口中的抽象方法,從而實(shí)現(xiàn)了對(duì)事件的處理響應(yīng)。
DavidFujava事件處理模型DavidFu常用事件源與事件類(lèi)對(duì)應(yīng)表事件類(lèi)說(shuō)明對(duì)應(yīng)事件源ActionEvent動(dòng)作事件,比如通常按下按鈕,雙擊列表項(xiàng)或選中一個(gè)菜單項(xiàng)時(shí),就會(huì)生成此事件。JButtonJList,JMenu,JTextField等AdjustmentEvent調(diào)節(jié)事件,比如移動(dòng)滾動(dòng)條等JScrollBar等ComponentEvent組件事件,比如移動(dòng)組件或改變組件大小JComponent繼承的組件,如JButton等FocusEvent焦點(diǎn)事件,比如獲得或失去焦點(diǎn)JComponent繼承的組件DavidFu常用事件源與事件類(lèi)對(duì)應(yīng)表ItemEvent事項(xiàng)事件,比如菜單、復(fù)選框中各項(xiàng)選中狀態(tài)的變化JMenu,JList,JComboBox等KeyEvent鍵盤(pán)事件,比如鍵盤(pán)輸入鍵盤(pán)MouseEvent鼠標(biāo)事件,比如點(diǎn)擊鼠標(biāo)左鍵鼠標(biāo)MouseMotionEvent鼠標(biāo)移動(dòng)事件,比如移動(dòng)鼠標(biāo)鼠標(biāo)WindowEvent窗口事件,比如關(guān)閉窗口JFrameDavidFu常用事件監(jiān)聽(tīng)器接口以及適配器類(lèi)事件監(jiān)聽(tīng)器接口方法名稱(chēng)對(duì)應(yīng)適配器類(lèi)ActionListeneractionPerformed無(wú)AdjustmentListeneradjustmentValueChanged無(wú)ComponentListenercomponentHidden,componentMoved,componentResized,componentShownComponentAdapterFocusListenerfocusGained,focusLostFocusAdapterItemListeneritemStateChanged無(wú)DavidFu常用事件監(jiān)聽(tīng)器接口以及適配器類(lèi)KeyListenerkeyPressed,keyReleased,keyTypedKeyAdapterMouseListenermouseCliked,mouseEntered,mouseExited,mousePressed,mouseReleasedMouseAdapterMouseMotionListenermouseDragged,mouseMovedMouseMotionAdapterWindowListenerwindowActivated,windowClosed,windowClosing,windowDeactivated,windowIconfied,windowDeIconfied,windowOpenedWindowAdapterDavidFu本課程綱要鼠標(biāo)事件處理
點(diǎn)擊事件處理√
java事件處理模型事件處理鍵盤(pán)、焦點(diǎn)事件和窗口事件DavidFu點(diǎn)擊事件處理機(jī)制事件監(jiān)聽(tīng)器一個(gè)事件源能響應(yīng)哪些事件,響應(yīng)事件的處理方法由事件監(jiān)聽(tīng)器完成。在開(kāi)發(fā)過(guò)程中需要完成兩件事:(1)向事件源注冊(cè)事件監(jiān)聽(tīng)器
button.addActionListener(this);在運(yùn)行過(guò)程中,事件監(jiān)聽(tīng)器一直監(jiān)視事件源button,一旦用戶(hù)單擊了事件源,事件監(jiān)聽(tīng)器將創(chuàng)建一個(gè)單擊事件類(lèi)ActionEvent類(lèi)的對(duì)象。(2)實(shí)現(xiàn)事件處理方法將該事件類(lèi)對(duì)象作為參數(shù)傳遞到事件處理方法中DavidFu點(diǎn)擊事件處理機(jī)制Java最新的事件處理方法是基于授權(quán)事件模型監(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)。DavidFu點(diǎn)擊事件處理機(jī)制創(chuàng)建事件監(jiān)聽(tīng)器類(lèi),即創(chuàng)建類(lèi)實(shí)現(xiàn)事件監(jiān)聽(tīng)器接口。并向事件源注冊(cè)事件監(jiān)聽(tīng)器(事件監(jiān)聽(tīng)器類(lèi)的對(duì)象)用戶(hù)操作事件源時(shí),java產(chǎn)生事件對(duì)象。事件源將事件對(duì)象傳遞給事件監(jiān)聽(tīng)器事件監(jiān)聽(tīng)器根據(jù)事件對(duì)象的種類(lèi),調(diào)用相應(yīng)事件處理方法進(jìn)行事件處理。DavidFu點(diǎn)擊事件處理機(jī)制點(diǎn)擊事件處理的三種編程形式:將本類(lèi)實(shí)現(xiàn)為事件監(jiān)聽(tīng)器,參見(jiàn)例題10-7單獨(dú)建立事件監(jiān)聽(tīng)器類(lèi),參見(jiàn)程序例題10-8
使用匿名內(nèi)部類(lèi)處理點(diǎn)擊事件,參見(jiàn)程序例題10-9
DavidFu本課程綱要鼠標(biāo)事件處理√
點(diǎn)擊事件處理java事件處理模型事件處理鍵盤(pán)、焦點(diǎn)事件和窗口事件DavidFu鼠標(biāo)事件處理-MouseEvent
鼠標(biāo)事件處理的監(jiān)聽(tīng)器鼠標(biāo)事件監(jiān)聽(tīng)器(MouseListener)鼠標(biāo)移動(dòng)事件監(jiān)聽(tīng)器(MouseMotionListener)鼠標(biāo)滾輪事件監(jiān)聽(tīng)器(MouseWheelListener)。
DavidFu鼠標(biāo)事件監(jiān)聽(tīng)器(MouseListener)
鼠標(biāo)事件監(jiān)聽(tīng)器主要處理鼠標(biāo)點(diǎn)擊動(dòng)作以及鼠標(biāo)與組件容器之間的作用,其接口中的成員方法定義如下:publicvoidmouseClicked(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)將鼠標(biāo)事件監(jiān)聽(tīng)器注冊(cè)到某個(gè)事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseListener(MouseListenerml)DavidFu鼠標(biāo)事件監(jiān)聽(tīng)器(MouseListener)
MouseEvent類(lèi)的常用方法為:publicPointgetPoint()publicint
getX()publicint
getY()publicint
getClickedCount()DavidFuMouseMotionListener鼠標(biāo)移動(dòng)事件監(jiān)聽(tīng)器鼠標(biāo)移動(dòng)監(jiān)聽(tīng)器接口的成員方法定義為:publicvoidmouseDragged(MouseEvente)publicvoidmouseMoved(MouseEvente)將鼠標(biāo)移動(dòng)事件監(jiān)聽(tīng)器注冊(cè)到事件源組件上,可以使用組件的成員方法:publicvoidaddMouseMotionListener(MouseMotionListener
mml)DavidFuMouseWheelListener鼠標(biāo)滾輪事件監(jiān)聽(tīng)器鼠標(biāo)滾輪事件監(jiān)聽(tīng)器主要處理鼠標(biāo)滾輪事件,其接口中的成員方法為:publicvoidmouseWheelMoved(MouseWheelEvente);將鼠標(biāo)滾輪事件監(jiān)聽(tīng)器注冊(cè)到事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseWheelListener(MouseWheelListener
mwl)DavidFuMouseWheelListener成員方法如下:publicPointgetPoint()publicint
getX()publicint
getY()publicint
getWheelRotation()DavidFu鼠標(biāo)事件適配器MouseAdapter處理鼠標(biāo)點(diǎn)擊事件publicvoidmouseClicked(MouseEvente){}處理按下鼠標(biāo)過(guò)程事件publicvoidmousePressed(MouseEvente){}處理松開(kāi)鼠標(biāo)過(guò)程事件publicvoidmouseReleased(MouseEvente){}處理鼠標(biāo)進(jìn)入組件的事件publicvoidmouseEntered(MouseEvente){}處理鼠標(biāo)離開(kāi)組件的事件publicvoidmouseExited(MouseEvente){}DavidFu鼠標(biāo)事件適配器MouseAdapterMouseMotionAdapter抽象類(lèi)實(shí)現(xiàn)了鼠標(biāo)移動(dòng)和拖動(dòng)的相關(guān)事件的兩個(gè)方法publicvoidmouseDragged(MouseEvente){}publicvoidmouseMoved(MouseEvente){}參見(jiàn)例題10-10
DavidFu本課程綱要鼠標(biāo)事件處理
點(diǎn)擊事件處理java事件處理模型事件處理鍵盤(pán)、焦點(diǎn)事件和窗口事件√DavidFuKeyEvent鍵盤(pán)事件監(jiān)聽(tīng)器接口KeyListener
publicvoidkeyType(KeyEvente);publicvoidKeyPressed(KeyEvente);publicvoidKeyReleased(KeyEvente);將鍵盤(pán)事件監(jiān)聽(tīng)器與界面上的組件綁定到一起,其組件的成員方法為:publicvoidaddKeyListener(KeyListener
kl)KeyEvent類(lèi)的常用成員方法如下:publicchargetKeyChar()publicstaticStringgetKeyText()DavidFuFocusListener處理獲得鍵盤(pán)焦點(diǎn)事件publicvoidfocusGained(FocusEvent
fe)處理失去鍵盤(pán)焦點(diǎn)事件publicvoidfocusLost(FocusEvent
fe)參見(jiàn)例題10-11DavidFu窗口事件WindowEvent窗口事件監(jiān)聽(tīng)器主要處理與窗口打開(kāi)、關(guān)閉以及激活等過(guò)程相關(guān)的事件。窗口事件監(jiān)聽(tīng)器接口WindowListener的抽象方法如下:(1)publicvoidwindowActivate(windowEvente)(2)publicvoidwindowClosing(windowEvente)(3)publicvoidwindowClosed(windowEvente)(4)publicvoidwindowIconified(windowEvente)(5)publicvoidwindowDeIconified(windowEvente)(6)publicvoidwindowDeactivate(windowEvente)(7)publicvoidwindowOpened(windowEvente)
參見(jiàn)例題10-12DavidFu本章課程綱要Swing高級(jí)編程√事件處理組件與布局DavidFu本課程綱要JTree樹(shù)組件
JTable表格組件
JMenu菜單組件√
Swing高級(jí)編程多文檔界面DavidFuJMenu菜單組件DavidFu建立普通菜單的步驟創(chuàng)建菜單欄(JMenuBar)對(duì)象JMenuBar
myMenu=newJMenuBar();向窗口中添加菜單欄JFrame和JApplet容器包含一個(gè)設(shè)置菜單欄的方法setJMenuBar(),通過(guò)該方法可以將窗口設(shè)置成菜單窗口創(chuàng)建下拉菜單(JMenu)對(duì)象JMenu
fileMenu=newJMenu(“文件(F)”);根據(jù)特定符號(hào)設(shè)置菜單助記符使用JMenu成員方法setMnemonic()設(shè)置菜單助記符menu.setMnemonic(KeyEvent.VK_F);將菜單添加到菜單欄中
menuBar.add(menu);DavidFu建立普通菜單的步驟創(chuàng)建菜單項(xiàng)對(duì)象通過(guò)JMenuItem、JCheckBoxMenuItem和JRadioButtonMenuItem類(lèi)的構(gòu)造方法創(chuàng)建菜單項(xiàng)JMenuItem
menuItem=newJMenuItem("新建文件");JRadioButtonMenuItem
rbMenuItem=newJRadioButtonMenuItem("添加文件");JCheckBoxMenuItem
cbMenuItem=newJCheckBoxMenuItem("文本編輯");將菜單項(xiàng)添加到下拉菜單中menu.add(rbMenuItem);DavidFuJTablejavax.swing.JTable類(lèi)提供了一個(gè)顯示二維數(shù)據(jù)的表格組件表格通常由表頭和表格組成,在表格中列的寬度可以調(diào)整,甚至列可以重新排列左右順序。JTable類(lèi)構(gòu)造表格組件的方式如下:調(diào)用無(wú)參構(gòu)造函數(shù).
JTabletable=newJTable();以表頭和表數(shù)據(jù)創(chuàng)建表格.
Object[][]cellData={{"row1-col1","row1-col2"},{"row2-col1","row2-col2"}};
String[]columnNames={"col1","col2"};
JTabletable=newJTable(cellData,columnNames);DavidFu本課程綱要JTree樹(shù)組件
JTable表格組件√
JMenu菜單組件Swing高級(jí)編程多文檔界面DavidFuJTable
以表頭和表數(shù)據(jù)創(chuàng)建表格,并且讓表單元格不可改String[]headers={"表頭一","表頭二","表頭三"};
finalObject[][]data={{"呂布","男",newInteger(25),newBoolean(false)},{"張飛","男",newInteger(30),newBoolean(false)}};DefaultTableModelmodel=newDefaultTableModel(cellData,headers){publicboolean
isCellEditable(introw,intcolumn){
returnfalse;
}
};table=newJTable(model);DavidFu本課程綱要JTree樹(shù)組件√
JTable表格組件
JMenu菜單組件Swing高級(jí)編程多文檔界面DavidFuJTreeJavax.swing.JTree類(lèi)提供了樹(shù)組件的功能,可以方便的顯示多層次數(shù)據(jù),比如windows文件瀏覽器中的文件列表就是由樹(shù)狀結(jié)構(gòu)實(shí)現(xiàn)的DavidFuJTreeDefaultMutableTreeNode類(lèi)提供了創(chuàng)建樹(shù)上節(jié)點(diǎn)的構(gòu)造方法:DefaultMutableTreeNode
rootNode=newDefaultMutableTreeNode("運(yùn)動(dòng)");樹(shù)組件可以觸發(fā)TreeSelectionEvent事件,通過(guò)樹(shù)組件對(duì)象調(diào)用注冊(cè)監(jiān)聽(tīng)器的方法來(lái)注冊(cè)樹(shù)組件的事件監(jiān)聽(tīng)器:addTreeSelectionListener(TreeSelectionListener
tsl)DavidFuJTree當(dāng)鼠標(biāo)點(diǎn)擊樹(shù)上的節(jié)點(diǎn)時(shí),系統(tǒng)將自動(dòng)創(chuàng)建TreeSelectionEvent對(duì)象,并將該對(duì)象傳遞到監(jiān)聽(tīng)器接口TreeSelectionListener的成員方法valueChanged(TreeSelectionEvente)中,通過(guò)該成員方法處理樹(shù)節(jié)點(diǎn)相關(guān)信息。樹(shù)中特定的節(jié)點(diǎn)可以由TreePath對(duì)象標(biāo)識(shí),通過(guò)TreePath對(duì)象獲得當(dāng)前節(jié)點(diǎn)的路徑信息。使用getLastSelectedPathComponent()方法獲取選中的節(jié)點(diǎn)。參見(jiàn)例題10-15DavidFu本課程綱要JTree樹(shù)組件
JTable表格組件
JMenu菜單組件Swing高級(jí)編程多文檔界面√DavidFu多文檔界面用于實(shí)現(xiàn)多文檔界面的兩個(gè)主要的類(lèi)分別是javax.swing.JDesktopPanejavax.swing.JInternalFrame類(lèi)DavidFu設(shè)計(jì)多文檔界面的步驟
通過(guò)getContentPane()方法獲取JFrame窗體的底層面板。創(chuàng)建JDesktopPane桌面面板對(duì)象,并將該對(duì)象組件添加到JFrame窗體的底層面板上。在相關(guān)的事件處理方法中,創(chuàng)建JInternalFrame內(nèi)部框架組件對(duì)象,并在該組件對(duì)象的ContentPane中添加相關(guān)組件或容器,構(gòu)成子窗口組件。將子窗口組件添加到桌面面板上,由桌面面板組件統(tǒng)一管理多個(gè)子窗口DavidFuJDesktopPane類(lèi)的主要成員方法
JInternalFrame[]getAllFrames()
返回桌面中當(dāng)前顯示的所有JInternalFrames。
JInternalFrame[]getAllFramesInLayer(int
layer)
返回桌面指定層中所顯示的所有子窗口。
DesktopManagergetDesktopManager()
返回處理特定于桌面UI操作的DesktopManger。
intgetDragMode()
獲取桌面窗格當(dāng)前使用的“拖動(dòng)樣式”。
JInte
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 稻谷加工設(shè)備智能化改造案例分析考核試卷
- 電動(dòng)工具在太陽(yáng)能光伏組件生產(chǎn)中的作用考核試卷
- 甘肅省收費(fèi)公路運(yùn)營(yíng)服務(wù)質(zhì)量(月度、年度)評(píng)價(jià)表
- 紙張的柔軟度與舒適度考核試卷
- 站內(nèi)安全防護(hù)系統(tǒng)升級(jí)與改造考核試卷
- 三年級(jí)數(shù)學(xué)口算天天練(可下載直接打印)
- 電機(jī)在電力行業(yè)能源資源開(kāi)發(fā)與利用的應(yīng)用考核試卷
- 社交心理學(xué)在品牌傳播中的應(yīng)用考核試卷
- 管道配件在農(nóng)業(yè)灌溉系統(tǒng)的應(yīng)用考核試卷
- 南京高三語(yǔ)文輔導(dǎo)作文
- 《信息加密技術(shù)》課件
- 人教部編版八年級(jí)道德與法治上冊(cè):8.2《堅(jiān)持國(guó)家利益至上》聽(tīng)課評(píng)課記錄3
- 《“長(zhǎng)賜”輪擱淺蘇伊士運(yùn)河事故探析及預(yù)防對(duì)策探究》7700字
- 2025年天翼云高級(jí)運(yùn)維工程師認(rèn)證參考試題庫(kù)(含答案)
- 加油站的員工培訓(xùn)與技能提升
- 小米財(cái)務(wù)管理
- 《變態(tài)反應(yīng)性皮膚病》課件
- 2021年高考物理試卷(福建)(空白卷)
- 2025年4月日歷表(含農(nóng)歷-周數(shù)-方便記事備忘)
- 二零二五年光伏發(fā)電項(xiàng)目碳排放權(quán)交易合作協(xié)議3篇
- 浙教版七年級(jí)下冊(cè)數(shù)學(xué)期中試卷-2
評(píng)論
0/150
提交評(píng)論