Java程序設(shè)計(jì)課件-第八章-Swing圖形用戶界面程序設(shè)計(jì)_第1頁
Java程序設(shè)計(jì)課件-第八章-Swing圖形用戶界面程序設(shè)計(jì)_第2頁
Java程序設(shè)計(jì)課件-第八章-Swing圖形用戶界面程序設(shè)計(jì)_第3頁
Java程序設(shè)計(jì)課件-第八章-Swing圖形用戶界面程序設(shè)計(jì)_第4頁
Java程序設(shè)計(jì)課件-第八章-Swing圖形用戶界面程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java語言程序設(shè)計(jì)

第八章swing圖形用戶界面

(GUI)編程講授人:傅曉陽教授本章課程綱要Swing高級(jí)編程事件處理組件與布局√DavidFu本課程綱要布局管理器

swing組件概述

組件與容器

組件與布局DavidFu組件與容器圖形用戶界面(GUI)數(shù)據(jù)的圖形顯示形式友好的交互方式簡化計(jì)算機(jī)軟件的學(xué)習(xí)過程GUI組件重量級(jí)組件------AWT輕量級(jí)組件------Swing,SWT,JFace,jigloo…DavidFu組件與容器早期版本的GUI組件所在的包:java.awt圖形用戶界面(GUI)可以通過鍵盤或鼠標(biāo)來響應(yīng)用戶的操作。抽象窗口工具包(AWT)是一組Java類,此組Java類允許創(chuàng)建圖形用戶界面(GUI)。與平臺(tái)相關(guān)性較強(qiáng)DavidFu組件與容器SwingGUI組件所在的包:javax.swingSwing組件的平臺(tái)相關(guān)性較小(lightweight)Java1.2引入稱為Swing的新的GUI組件庫。

Swing包括javax.swing包及其子包。盡管Swing獨(dú)立于AWT,但它是依照基本的AWT類實(shí)現(xiàn)的。每個(gè)swing組件都由MVC三個(gè)部分組成

DavidFu本課程綱要布局管理器

swing組件概述√

組件與容器組件與布局DavidFu

swing組件繼承關(guān)系框圖

DavidFu頂層容器和中間容器頂層容器類主要包括:JApplet類:小應(yīng)用程序主要用于設(shè)計(jì)嵌入到網(wǎng)頁的程序模塊,通過網(wǎng)頁瀏覽器運(yùn)行,實(shí)現(xiàn)一個(gè)小功能JFrame類:窗體框架主要實(shí)現(xiàn)一個(gè)帶邊界框架的windows標(biāo)準(zhǔn)的圖形用戶界面。JDialog類:對(duì)話框窗口,通常將窗體框架作為父窗口,創(chuàng)建對(duì)話框子窗口。對(duì)話框分為模式對(duì)話框和非模式對(duì)話框。

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通常是用來觸發(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ū)沒有自動(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),也可以存放任何類型的對(duì)象。用戶可以對(duì)列表框中的項(xiàng)目進(jìn)行添加和刪除。列表框的構(gòu)造方法為:publicJlist(ListModel

dataModel)publicJlist(Object[]listData)publicJlist(Vector<?>listData)

DavidFuJCombBox組合框(JComboBox)可以從下拉式的列表框中選取其中的列表項(xiàng)類JComboBox中的方法getSelectedIndex()返回當(dāng)前被選中的項(xiàng)setMaximumRowCount(n)設(shè)置最多顯示列表項(xiàng)的項(xiàng)數(shù)滾動(dòng)條(Scrollbar)會(huì)自動(dòng)加上參見例題TestComponentDavidFu本課程綱要布局管理器

swing組件概述

組件與容器組件與布局DavidFu布局管理器常用的布局管理器為:流式布局(FlowLayout)方位布局(BorderLayout)網(wǎng)格布局(GridLayout)網(wǎng)格塊布局(GridBagLayout)卡片布局(CardLayout)盒式布局(BoxLayout)

DavidFuswing容器默認(rèn)布局方式容器種類默認(rèn)布局方式j(luò)avax.swing.JAppletBorderLayout方位布局Javax.swingJFrameBorderLayout方位布局Javax.swing.JDialogBorderLayout方位布局Javax.swing.JpanelFlowLayout流式布局DavidFu流式布局FlowLayout流式布局的特點(diǎn)是按照由左向右、由上向下的順序排列組件FlowLayout類的構(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類的構(gòu)造方法為:publicBorderLayout()publicBorderLayout(int

hgap,int

vgap)

DavidFu方位布局BorderLayoutDavidFu網(wǎng)格布局GridLayout網(wǎng)格布局將容器分成若干尺寸大小相等的單元格。用戶可以將每個(gè)組件布局到每個(gè)單元格中,組件的大小受到單元格大小的限制。網(wǎng)格布局GridLayout類的構(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類的構(gòu)造方法為:publicCardLayout()publicCardLayout(int

hap,int

vgap)DavidFu卡片布局CardLayoutDavidFu箱式布局BoxLayoutBoxLayout類可以設(shè)置多個(gè)組件沿水平和垂直方向排列,好像港口中的“集裝箱”排列一樣,因此稱為箱式布局。對(duì)于箱式布局,容器大小發(fā)生變化時(shí),組件所占用的空間不會(huì)發(fā)生改變,當(dāng)組件的寬度超出了容器的寬度或高度時(shí),組件也不會(huì)換行或換列,而是沿著原來的方向保持“鋼性”排列BoxLayout類的構(gòu)造方法為:PublicBoxLayout(Containerc,intaxis)DavidFu箱式布局BoxLayoutDavidFu本章課程綱要Swing高級(jí)編程事件處理√組件與布局DavidFu本課程綱要鼠標(biāo)事件處理

點(diǎn)擊事件處理java事件處理模型

事件處理鍵盤和焦點(diǎn)事件DavidFujava事件處理模型事件處理模型由三個(gè)基本要素組成:事件源:能夠產(chǎn)生事件響應(yīng)的容器或組件對(duì)象,如文本框、按鈕等。事件對(duì)象:由事件源自動(dòng)產(chǎn)生的事件類對(duì)象,封裝了事件的相關(guān)信息。事件監(jiān)聽器:實(shí)現(xiàn)了監(jiān)聽器接口的類,該類具體實(shí)現(xiàn)了監(jiān)聽器接口中的抽象方法,從而實(shí)現(xiàn)了對(duì)事件的處理響應(yīng)。

DavidFujava事件處理模型DavidFu常用事件源與事件類對(duì)應(yīng)表事件類說明對(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常用事件源與事件類對(duì)應(yīng)表ItemEvent事項(xiàng)事件,比如菜單、復(fù)選框中各項(xiàng)選中狀態(tài)的變化JMenu,JList,JComboBox等KeyEvent鍵盤事件,比如鍵盤輸入鍵盤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)聽器接口以及適配器類事件監(jiān)聽器接口方法名稱對(duì)應(yīng)適配器類ActionListeneractionPerformed無AdjustmentListeneradjustmentValueChanged無ComponentListenercomponentHidden,componentMoved,componentResized,componentShownComponentAdapterFocusListenerfocusGained,focusLostFocusAdapterItemListeneritemStateChanged無DavidFu常用事件監(jiān)聽器接口以及適配器類KeyListenerkeyPressed,keyReleased,keyTypedKeyAdapterMouseListenermouseCliked,mouseEntered,mouseExited,mousePressed,mouseReleasedMouseAdapterMouseMotionListenermouseDragged,mouseMovedMouseMotionAdapterWindowListenerwindowActivated,windowClosed,windowClosing,windowDeactivated,windowIconfied,windowDeIconfied,windowOpenedWindowAdapterDavidFu本課程綱要鼠標(biāo)事件處理

點(diǎn)擊事件處理√

java事件處理模型事件處理鍵盤、焦點(diǎn)事件和窗口事件DavidFu點(diǎn)擊事件處理機(jī)制事件監(jiān)聽器一個(gè)事件源能響應(yīng)哪些事件,響應(yīng)事件的處理方法由事件監(jiān)聽器完成。在開發(fā)過程中需要完成兩件事:(1)向事件源注冊(cè)事件監(jiān)聽器

button.addActionListener(this);在運(yùn)行過程中,事件監(jiān)聽器一直監(jiān)視事件源button,一旦用戶單擊了事件源,事件監(jiān)聽器將創(chuàng)建一個(gè)單擊事件類ActionEvent類的對(duì)象。(2)實(shí)現(xiàn)事件處理方法將該事件類對(duì)象作為參數(shù)傳遞到事件處理方法中DavidFu點(diǎn)擊事件處理機(jī)制Java最新的事件處理方法是基于授權(quán)事件模型監(jiān)聽器對(duì)象屬于一個(gè)事件類的實(shí)例,這個(gè)類實(shí)現(xiàn)了一個(gè)特殊的接口,名為“監(jiān)聽器接口”事件源將在發(fā)生事件時(shí)向所有注冊(cè)的監(jiān)聽器發(fā)送事件對(duì)象。監(jiān)聽器對(duì)象使用事件對(duì)象中的信息來確定它們對(duì)事件的響應(yīng)。DavidFu點(diǎn)擊事件處理機(jī)制創(chuàng)建事件監(jiān)聽器類,即創(chuàng)建類實(shí)現(xiàn)事件監(jiān)聽器接口。并向事件源注冊(cè)事件監(jiān)聽器(事件監(jiān)聽器類的對(duì)象)用戶操作事件源時(shí),java產(chǎn)生事件對(duì)象。事件源將事件對(duì)象傳遞給事件監(jiān)聽器事件監(jiān)聽器根據(jù)事件對(duì)象的種類,調(diào)用相應(yīng)事件處理方法進(jìn)行事件處理。DavidFu點(diǎn)擊事件處理機(jī)制點(diǎn)擊事件處理的三種編程形式:將本類實(shí)現(xiàn)為事件監(jiān)聽器,參見例題10-7單獨(dú)建立事件監(jiān)聽器類,參見程序例題10-8

使用匿名內(nèi)部類處理點(diǎn)擊事件,參見程序例題10-9

DavidFu本課程綱要鼠標(biāo)事件處理√

點(diǎn)擊事件處理java事件處理模型事件處理鍵盤、焦點(diǎn)事件和窗口事件DavidFu鼠標(biāo)事件處理-MouseEvent

鼠標(biāo)事件處理的監(jiān)聽器鼠標(biāo)事件監(jiān)聽器(MouseListener)鼠標(biāo)移動(dòng)事件監(jiān)聽器(MouseMotionListener)鼠標(biāo)滾輪事件監(jiān)聽器(MouseWheelListener)。

DavidFu鼠標(biāo)事件監(jiān)聽器(MouseListener)

鼠標(biāo)事件監(jiān)聽器主要處理鼠標(biāo)點(diǎn)擊動(dòng)作以及鼠標(biāo)與組件容器之間的作用,其接口中的成員方法定義如下:publicvoidmouseClicked(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)將鼠標(biāo)事件監(jiān)聽器注冊(cè)到某個(gè)事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseListener(MouseListenerml)DavidFu鼠標(biāo)事件監(jiān)聽器(MouseListener)

MouseEvent類的常用方法為:publicPointgetPoint()publicint

getX()publicint

getY()publicint

getClickedCount()DavidFuMouseMotionListener鼠標(biāo)移動(dòng)事件監(jiān)聽器鼠標(biāo)移動(dòng)監(jiān)聽器接口的成員方法定義為:publicvoidmouseDragged(MouseEvente)publicvoidmouseMoved(MouseEvente)將鼠標(biāo)移動(dòng)事件監(jiān)聽器注冊(cè)到事件源組件上,可以使用組件的成員方法:publicvoidaddMouseMotionListener(MouseMotionListener

mml)DavidFuMouseWheelListener鼠標(biāo)滾輪事件監(jiān)聽器鼠標(biāo)滾輪事件監(jiān)聽器主要處理鼠標(biāo)滾輪事件,其接口中的成員方法為:publicvoidmouseWheelMoved(MouseWheelEvente);將鼠標(biāo)滾輪事件監(jiān)聽器注冊(cè)到事件源上,可以使用組件或容器的成員方法:publicvoidaddMouseWheelListener(MouseWheelListener

mwl)DavidFuMouseWheelListener成員方法如下:publicPointgetPoint()publicint

getX()publicint

getY()publicint

getWheelRotation()DavidFu鼠標(biāo)事件適配器MouseAdapter處理鼠標(biāo)點(diǎn)擊事件publicvoidmouseClicked(MouseEvente){}處理按下鼠標(biāo)過程事件publicvoidmousePressed(MouseEvente){}處理松開鼠標(biāo)過程事件publicvoidmouseReleased(MouseEvente){}處理鼠標(biāo)進(jìn)入組件的事件publicvoidmouseEntered(MouseEvente){}處理鼠標(biāo)離開組件的事件publicvoidmouseExited(MouseEvente){}DavidFu鼠標(biāo)事件適配器MouseAdapterMouseMotionAdapter抽象類實(shí)現(xiàn)了鼠標(biāo)移動(dòng)和拖動(dòng)的相關(guān)事件的兩個(gè)方法publicvoidmouseDragged(MouseEvente){}publicvoidmouseMoved(MouseEvente){}參見例題10-10

DavidFu本課程綱要鼠標(biāo)事件處理

點(diǎn)擊事件處理java事件處理模型事件處理鍵盤、焦點(diǎn)事件和窗口事件√DavidFuKeyEvent鍵盤事件監(jiān)聽器接口KeyListener

publicvoidkeyType(KeyEvente);publicvoidKeyPressed(KeyEvente);publicvoidKeyReleased(KeyEvente);將鍵盤事件監(jiān)聽器與界面上的組件綁定到一起,其組件的成員方法為:publicvoidaddKeyListener(KeyListener

kl)KeyEvent類的常用成員方法如下:publicchargetKeyChar()publicstaticStringgetKeyText()DavidFuFocusListener處理獲得鍵盤焦點(diǎn)事件publicvoidfocusGained(FocusEvent

fe)處理失去鍵盤焦點(diǎn)事件publicvoidfocusLost(FocusEvent

fe)參見例題10-11DavidFu窗口事件WindowEvent窗口事件監(jiān)聽器主要處理與窗口打開、關(guān)閉以及激活等過程相關(guān)的事件。窗口事件監(jiān)聽器接口WindowListener的抽象方法如下:(1)publicvoidwindowActivate(windowEvente)(2)publicvoidwindowClosing(windowEvente)(3)publicvoidwindowClosed(windowEvente)(4)publicvoidwindowIconified(windowEvente)(5)publicvoidwindowDeIconified(windowEvente)(6)publicvoidwindowDeactivate(windowEvente)(7)publicvoidwindowOpened(windowEvente)

參見例題10-12DavidFu本章課程綱要Swing高級(jí)編程√事件處理組件與布局DavidFu本課程綱要JTree樹組件

JTable表格組件

JMenu菜單組件√

Swing高級(jí)編程多文檔界面DavidFuJMenu菜單組件DavidFu建立普通菜單的步驟創(chuàng)建菜單欄(JMenuBar)對(duì)象JMenuBar

myMenu=newJMenuBar();向窗口中添加菜單欄JFrame和JApplet容器包含一個(gè)設(shè)置菜單欄的方法setJMenuBar(),通過該方法可以將窗口設(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ì)象通過JMenuItem、JCheckBoxMenuItem和JRadioButtonMenuItem類的構(gòu)造方法創(chuàng)建菜單項(xiàng)JMenuItem

menuItem=newJMenuItem("新建文件");JRadioButtonMenuItem

rbMenuItem=newJRadioButtonMenuItem("添加文件");JCheckBoxMenuItem

cbMenuItem=newJCheckBoxMenuItem("文本編輯");將菜單項(xiàng)添加到下拉菜單中menu.add(rbMenuItem);DavidFuJTablejavax.swing.JTable類提供了一個(gè)顯示二維數(shù)據(jù)的表格組件表格通常由表頭和表格組成,在表格中列的寬度可以調(diào)整,甚至列可以重新排列左右順序。JTable類構(gòu)造表格組件的方式如下:調(diào)用無參構(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樹組件

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樹組件√

JTable表格組件

JMenu菜單組件Swing高級(jí)編程多文檔界面DavidFuJTreeJavax.swing.JTree類提供了樹組件的功能,可以方便的顯示多層次數(shù)據(jù),比如windows文件瀏覽器中的文件列表就是由樹狀結(jié)構(gòu)實(shí)現(xiàn)的DavidFuJTreeDefaultMutableTreeNode類提供了創(chuàng)建樹上節(jié)點(diǎn)的構(gòu)造方法:DefaultMutableTreeNode

rootNode=newDefaultMutableTreeNode("運(yùn)動(dòng)");樹組件可以觸發(fā)TreeSelectionEvent事件,通過樹組件對(duì)象調(diào)用注冊(cè)監(jiān)聽器的方法來注冊(cè)樹組件的事件監(jiān)聽器:addTreeSelectionListener(TreeSelectionListener

tsl)DavidFuJTree當(dāng)鼠標(biāo)點(diǎn)擊樹上的節(jié)點(diǎn)時(shí),系統(tǒng)將自動(dòng)創(chuàng)建TreeSelectionEvent對(duì)象,并將該對(duì)象傳遞到監(jiān)聽器接口TreeSelectionListener的成員方法valueChanged(TreeSelectionEvente)中,通過該成員方法處理樹節(jié)點(diǎn)相關(guān)信息。樹中特定的節(jié)點(diǎn)可以由TreePath對(duì)象標(biāo)識(shí),通過TreePath對(duì)象獲得當(dāng)前節(jié)點(diǎn)的路徑信息。使用getLastSelectedPathComponent()方法獲取選中的節(jié)點(diǎn)。參見例題10-15DavidFu本課程綱要JTree樹組件

JTable表格組件

JMenu菜單組件Swing高級(jí)編程多文檔界面√DavidFu多文檔界面用于實(shí)現(xiàn)多文檔界面的兩個(gè)主要的類分別是javax.swing.JDesktopPanejavax.swing.JInternalFrame類DavidFu設(shè)計(jì)多文檔界面的步驟

通過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類的主要成員方法

JInternalFrame[]getAllFrames()

返回桌面中當(dāng)前顯示的所有JInternalFrames。

JInternalFrame[]getAllFramesInLayer(int

layer)

返回桌面指定層中所顯示的所有子窗口。

DesktopManagergetDesktopManager()

返回處理特定于桌面UI操作的DesktopManger。

intgetDragMode()

獲取桌面窗格當(dāng)前使用的“拖動(dòng)樣式”。

JInte

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論