第十二章 使用Swing組件_第1頁
第十二章 使用Swing組件_第2頁
第十二章 使用Swing組件_第3頁
第十二章 使用Swing組件_第4頁
第十二章 使用Swing組件_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 頂級容器組件頂級容器組件 通用容器組件通用容器組件 專用容器組件專用容器組件 基本控件基本控件 不可編輯組件不可編輯組件 交互的格式組件交互的格式組件 文本組件文本組件 l框架框架 框架是一個(gè)圖形界面程序的主窗口框架是一個(gè)圖形界面程序的主窗口 在在Java中,每個(gè)具有圖形界面的程序至少要有一個(gè)中,每個(gè)具有圖形界面的程序至少要有一個(gè) 框架,小程序有時(shí)也會使用框架框架,小程序有時(shí)也會使用框架 框架是由邊框、標(biāo)題欄、最大化、最小化、還原、框架是由邊框、標(biāo)題欄、最大化、最小化、還原、 移動、關(guān)閉按鈕、系統(tǒng)菜單,以及內(nèi)容窗格組成移動、關(guān)閉按鈕、系統(tǒng)菜單,以及內(nèi)容窗格組成 內(nèi)容窗格是框架的核心區(qū)域,主要

2、的圖形界面組件、內(nèi)容窗格是框架的核心區(qū)域,主要的圖形界面組件、 菜單欄、工具欄都在內(nèi)容窗格中菜單欄、工具欄都在內(nèi)容窗格中 l框架框架 框架是框架是JFrame類的對象。創(chuàng)建并顯示一個(gè)框架的步類的對象。創(chuàng)建并顯示一個(gè)框架的步 驟如下:驟如下: 創(chuàng)建一個(gè)創(chuàng)建一個(gè)JFrame對象,此時(shí)框架尚未顯示對象,此時(shí)框架尚未顯示 在添加了組件之后,調(diào)用在添加了組件之后,調(diào)用pack函數(shù)排列組件函數(shù)排列組件 調(diào)用它的調(diào)用它的setVisible函數(shù)以顯示框架函數(shù)以顯示框架 FrameDemoFrame frame = new FrameDemoFrame(); frame.setTitle(FrameDemo

3、- 框架功能演示框架功能演示); frame.pack(); frame.setVisible(true); l框架框架 執(zhí)行這段程序,顯示的執(zhí)行這段程序,顯示的 框架如下圖所示:框架如下圖所示: 用鼠標(biāo)拉開窗口之后,用鼠標(biāo)拉開窗口之后, 如右圖所示:如右圖所示: 由于框架中尚沒有組件,由于框架中尚沒有組件, 因此因此Java自動將框架縮自動將框架縮 到最小尺寸到最小尺寸 l框架框架 利用利用setIconImage函數(shù)為程序設(shè)置圖標(biāo)函數(shù)為程序設(shè)置圖標(biāo) String imgURL = myicon.gif; ImageIcon icon = new ImageIcon(imgURL); fra

4、me.setIconImage(icon.getImage(); 實(shí)際中,上述三行代碼可以精簡為一行:實(shí)際中,上述三行代碼可以精簡為一行: frame.setIconImage(new ImageIcon(myicon.gif).getImage(); l框架框架 關(guān)閉程序的方法關(guān)閉程序的方法1:將關(guān)閉窗口操作設(shè)為退出程序:將關(guān)閉窗口操作設(shè)為退出程序: frame.setTitle(FrameDemo - 框架功能演示框架功能演示); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); 上例中,調(diào)用上例中,調(diào)用

5、setDefaultCloseOperation函數(shù)設(shè)定關(guān)函數(shù)設(shè)定關(guān) 閉框架時(shí)的操作。函數(shù)形式如下:閉框架時(shí)的操作。函數(shù)形式如下: public void JFrame.setDefaultCloseOperation(int operation); l框架框架 參數(shù)代表關(guān)閉時(shí)的操作,可以有如下值:參數(shù)代表關(guān)閉時(shí)的操作,可以有如下值: lWindowConstants.DO_NOTHING_ON_CLOSE:不做任:不做任 何事,用窗口監(jiān)聽器進(jìn)行關(guān)閉工作何事,用窗口監(jiān)聽器進(jìn)行關(guān)閉工作 lWindowConstants.HIDE_ON_CLOSE:隱藏界面,這是:隱藏界面,這是 框架和對話框?qū)ο?/p>

6、的默認(rèn)操作框架和對話框?qū)ο蟮哪J(rèn)操作 lWindowConstants.DISPOSE_ON_CLOSE:隱藏窗口,并:隱藏窗口,并 且釋放它使用的資源,這是內(nèi)部框架對象的默認(rèn)操作且釋放它使用的資源,這是內(nèi)部框架對象的默認(rèn)操作 lJFrame.EXIT_ON_CLOSE:退出應(yīng)用程序,這種退出方:退出應(yīng)用程序,這種退出方 式只能用于應(yīng)用程序的主框架中式只能用于應(yīng)用程序的主框架中 l框架框架 方法方法2:編寫窗口監(jiān)聽器類,在窗口關(guān)閉事件中關(guān):編寫窗口監(jiān)聽器類,在窗口關(guān)閉事件中關(guān) 閉程序,如下面的代碼所示:閉程序,如下面的代碼所示: frame.setDefaultCloseOperation(

7、WindowConstants.DO_NOTHING_ON_CLOSE); frame. addWindowListener(new FrameDemoFrame_WindowListener_Closing(frame); l框架框架 兩種方法實(shí)現(xiàn)的功能是一樣的,第一種方法遠(yuǎn)比第兩種方法實(shí)現(xiàn)的功能是一樣的,第一種方法遠(yuǎn)比第 二種方法簡單二種方法簡單 但第一種方法在關(guān)閉時(shí)只能直接退出程序,而第二但第一種方法在關(guān)閉時(shí)只能直接退出程序,而第二 種方法可以實(shí)現(xiàn)更多功能種方法可以實(shí)現(xiàn)更多功能 如果在退出程序時(shí)需要用戶確認(rèn),或者提示用戶保如果在退出程序時(shí)需要用戶確認(rèn),或者提示用戶保 存文件,就必須采用第

8、二種方法存文件,就必須采用第二種方法 在使用第二種方法時(shí),必須將窗口關(guān)閉時(shí)的操作設(shè)在使用第二種方法時(shí),必須將窗口關(guān)閉時(shí)的操作設(shè) 為無,否則程序?qū)⒅苯油顺鰹闊o,否則程序?qū)⒅苯油顺?l框架框架 例題:在退出程序時(shí),要求用戶確認(rèn):例題:在退出程序時(shí),要求用戶確認(rèn): public void windowClosing(WindowEvent e) int returnValue; returnValue = JOptionPane.showConfirmDialog(null, 確實(shí)要退確實(shí)要退 出程序嗎?出程序嗎?, 退出程序退出程序, JOptionPane.YES_NO_OPTION); if

9、(returnValue = JOptionPane.YES_OPTION) System.exit(0); l框架框架 在框架中加入組件的方法:在框架中加入組件的方法: 用用getContentPane函數(shù)獲得內(nèi)容窗格函數(shù)獲得內(nèi)容窗格 在內(nèi)容窗格中用在內(nèi)容窗格中用add函數(shù)加入各種組件函數(shù)加入各種組件 JPanel contentPane; contentPane = frame.getContentPane(); JPanel panel1 = new JPanel(); contentPane.add(panel1); panel1.add(new JLabel(請點(diǎn)擊下面的按鈕:請點(diǎn)擊

10、下面的按鈕:); panel1.add(new JButton(關(guān)閉關(guān)閉); l框架框架 本例中,在內(nèi)容窗格上加入了一個(gè)面板,在面板上本例中,在內(nèi)容窗格上加入了一個(gè)面板,在面板上 放置了一個(gè)文字標(biāo)簽和一個(gè)按鈕放置了一個(gè)文字標(biāo)簽和一個(gè)按鈕 顯示的效果如圖:顯示的效果如圖: l框架框架 主程序框架一般還有菜單欄。主程序中的菜單欄通主程序框架一般還有菜單欄。主程序中的菜單欄通 過過setJMenuBar函數(shù)來設(shè)定:函數(shù)來設(shè)定: JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); JMenuBar是菜單對象,實(shí)際中還需要在其中加

11、入是菜單對象,實(shí)際中還需要在其中加入 菜單項(xiàng)和菜單子項(xiàng)菜單項(xiàng)和菜單子項(xiàng) 關(guān)于菜單,后面還會有詳細(xì)介紹關(guān)于菜單,后面還會有詳細(xì)介紹 l框架框架 對于前面的例子,增加兩個(gè)菜單項(xiàng):對于前面的例子,增加兩個(gè)菜單項(xiàng):“文件文件”和和 “幫助幫助”,源代碼見教材,增加菜單以后的主程序,源代碼見教材,增加菜單以后的主程序 界面如下:界面如下: l框架框架 調(diào)整主程序界面的大?。赫{(diào)整主程序界面的大小: l調(diào)用調(diào)用pack函數(shù)進(jìn)行自動調(diào)整函數(shù)進(jìn)行自動調(diào)整 l調(diào)用調(diào)用setSize函數(shù)指定界面的大小函數(shù)指定界面的大小 l調(diào)用調(diào)用setLocation函數(shù)指定界面的位置函數(shù)指定界面的位置 l對話框?qū)υ捒?對話框是另

12、一類常用的頂級容器對話框是另一類常用的頂級容器 對話框與框架非常相似,復(fù)雜的對話框也能夠?qū)崿F(xiàn)對話框與框架非常相似,復(fù)雜的對話框也能夠?qū)崿F(xiàn) 框架的幾乎所有功能框架的幾乎所有功能 實(shí)際中,常用的是界面簡單、功能高度特化的對話實(shí)際中,常用的是界面簡單、功能高度特化的對話 框框 l消息框:顯示一條消息消息框:顯示一條消息 l選擇框:讓用戶進(jìn)行選擇選擇框:讓用戶進(jìn)行選擇 l文件選擇框:選擇文件進(jìn)行打開、保存等操作文件選擇框:選擇文件進(jìn)行打開、保存等操作 l顏色選擇框:從調(diào)色板中選擇顏色顏色選擇框:從調(diào)色板中選擇顏色 l對話框?qū)υ捒?例:在主框架程序中添加一個(gè)通用對話框,里面有例:在主框架程序中添加一個(gè)通

13、用對話框,里面有 一個(gè)文字標(biāo)簽和一個(gè)按鈕:一個(gè)文字標(biāo)簽和一個(gè)按鈕: public void showDialog2() JDialog dialog = new JDialog(this, 對話框?qū)υ捒?; JPanel panel1 = new JPanel(); dialog.getContentPane().add(panel1); panel1.add(new JLabel(這是一個(gè)對話框。這是一個(gè)對話框。); panel1.add(new JButton(點(diǎn)擊這里點(diǎn)擊這里); dialog.pack(); dialog.setVisible(true); l對話框?qū)υ捒?對話框分為有

14、模式的和無模式的兩種類型對話框分為有模式的和無模式的兩種類型 有模式的對話框在顯示時(shí),將屏蔽用戶向?qū)υ捒蛩心J降膶υ捒蛟陲@示時(shí),將屏蔽用戶向?qū)υ捒蛩?屬的主框架鍵入的所有內(nèi)容,用戶不能對主框架進(jìn)屬的主框架鍵入的所有內(nèi)容,用戶不能對主框架進(jìn) 行任何操作行任何操作 無模式對話框在顯示時(shí),用戶仍然可以用鼠標(biāo)點(diǎn)擊無模式對話框在顯示時(shí),用戶仍然可以用鼠標(biāo)點(diǎn)擊 主框架,在主框架里輸入內(nèi)容,或移動主框架主框架,在主框架里輸入內(nèi)容,或移動主框架 缺省的缺省的JDialog對話框都是無模式對話框?qū)υ捒蚨际菬o模式對話框 l對話框?qū)υ捒?如果要創(chuàng)建有模式對話框,可以在構(gòu)造函數(shù)里增加如果要創(chuàng)建有模式對話框,可以在構(gòu)

15、造函數(shù)里增加 一項(xiàng)如下:一項(xiàng)如下: JDialog dialog = new JDialog(this, 對話框?qū)υ捒? true); 也可以用也可以用setModal函數(shù)來設(shè)置對話框是有模式的還函數(shù)來設(shè)置對話框是有模式的還 是無模式的:是無模式的: dialog.setModal(true); / 將對話框設(shè)置成有模式的將對話框設(shè)置成有模式的 dialog.setModal(false); / 將對話框設(shè)置成無模式的將對話框設(shè)置成無模式的 l對話框?qū)υ捒?消息框(消息框(JOptionPane)是一種非常簡潔、專用的)是一種非常簡潔、專用的 對話框。對話框。 例:彈出一個(gè)提示消息框:例:彈出

16、一個(gè)提示消息框: JOptionPane.showMessageDialog(frame, 修改已經(jīng)保存到文修改已經(jīng)保存到文 件中。件中。); 彈出的消息框如下圖所示:彈出的消息框如下圖所示: l對話框?qū)υ捒?消息框中的圖標(biāo):消息框中的圖標(biāo): l預(yù)設(shè)的圖標(biāo)有預(yù)設(shè)的圖標(biāo)有4種:錯誤圖標(biāo)、消息圖標(biāo)、警告種:錯誤圖標(biāo)、消息圖標(biāo)、警告 圖標(biāo)和提問圖標(biāo)圖標(biāo)和提問圖標(biāo) l可以顯示自己定制的圖標(biāo)可以顯示自己定制的圖標(biāo) 不同界面風(fēng)格下的圖標(biāo)風(fēng)格:不同界面風(fēng)格下的圖標(biāo)風(fēng)格: lWindows風(fēng)格風(fēng)格 l對話框?qū)υ捒?不同界面風(fēng)格下的圖標(biāo)風(fēng)格(續(xù)):不同界面風(fēng)格下的圖標(biāo)風(fēng)格(續(xù)): lJava風(fēng)格風(fēng)格 lCDE/

17、Motif風(fēng)格風(fēng)格 lGTK+風(fēng)格風(fēng)格 l對話框?qū)υ捒?常用消息框的調(diào)用:常用消息框的調(diào)用: l消息框:利用靜態(tài)函數(shù)消息框:利用靜態(tài)函數(shù)showMessageDialog顯示顯示 l確認(rèn)框:利用靜態(tài)函數(shù)確認(rèn)框:利用靜態(tài)函數(shù)showConfirmDialog顯示顯示 l選擇框:利用靜態(tài)函數(shù)選擇框:利用靜態(tài)函數(shù)showOptionDialog顯示顯示 l輸入框:利用靜態(tài)函數(shù)輸入框:利用靜態(tài)函數(shù)showInputDialog顯示顯示 頂級容器組件頂級容器組件 通用容器組件通用容器組件 專用容器組件專用容器組件 基本控件基本控件 不可編輯組件不可編輯組件 交互的格式組件交互的格式組件 文本組件文本組件

18、 l面板面板 面板是最常用的容器組件。缺省情況下,面板上除面板是最常用的容器組件。缺省情況下,面板上除 了背景色以外沒有任何東西了背景色以外沒有任何東西 可以用多個(gè)面板,配合不同的布局管理器來配置控可以用多個(gè)面板,配合不同的布局管理器來配置控 件在界面上的布局件在界面上的布局 l面板面板 在布局過程中,面板應(yīng)當(dāng)與合適的布局管理器搭配使在布局過程中,面板應(yīng)當(dāng)與合適的布局管理器搭配使 用用 面板默認(rèn)搭配的布局管理器是面板默認(rèn)搭配的布局管理器是FlowLayout,它簡單地,它簡單地 將面板中的組件排成一排將面板中的組件排成一排 調(diào)用調(diào)用setLayout函數(shù)可搭配新的布局管理器函數(shù)可搭配新的布局管

19、理器: JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(); panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS); l面板面板 調(diào)用調(diào)用add函數(shù)可以在面板中添加組件函數(shù)可以在面板中添加組件 對于大部分布局管理器,添加組件時(shí)不需要給出附對于大部分布局管理器,添加組件時(shí)不需要給出附 加參數(shù):加參數(shù): panel.add(myLabel); panel.add(myButton); 對于對于BorderLayout布局管理器,在添加組件時(shí)還需布局管理器,在添加

20、組件時(shí)還需 要給出組件的相對位置,如:要給出組件的相對位置,如: panel.add(myLabel, BorderLayout.PAGE_START); panel.add(myButton, BorderLayout.CENTER); l滾動條面板滾動條面板 滾動條面板可以在屏幕上有限的區(qū)域內(nèi)顯示更大范滾動條面板可以在屏幕上有限的區(qū)域內(nèi)顯示更大范 圍的內(nèi)容,例如:圍的內(nèi)容,例如: l滾動條面板滾動條面板 相應(yīng)的代碼如下:相應(yīng)的代碼如下: JScrollPane scrollPane = new JScrollPane(textArea1, JScrollPane.VERTICAL_SCRO

21、LLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollPane.setPreferredSize(new Dimension(250, 250); l滾動條面板滾動條面板 滾動條面板的構(gòu)造函數(shù)有三個(gè)參數(shù):滾動條面板的構(gòu)造函數(shù)有三個(gè)參數(shù): 第一個(gè)參數(shù)是放在滾動條面板里的組件第一個(gè)參數(shù)是放在滾動條面板里的組件 第二個(gè)參數(shù)設(shè)置豎滾條的狀態(tài)第二個(gè)參數(shù)設(shè)置豎滾條的狀態(tài) 第三個(gè)參數(shù)設(shè)置橫滾條的狀態(tài)第三個(gè)參數(shù)設(shè)置橫滾條的狀態(tài) 豎滾條和橫滾條都有三種狀態(tài):豎滾條和橫滾條都有三種狀態(tài): lalways:不管是否需要,滾動條都會出現(xiàn):不管是否需

22、要,滾動條都會出現(xiàn) las needed:只有需要滾動條時(shí)才出現(xiàn):只有需要滾動條時(shí)才出現(xiàn) lnever:不管是否需要,滾動條都不出現(xiàn):不管是否需要,滾動條都不出現(xiàn) l滾動條面板滾動條面板 滾動條的狀態(tài)通過滾動條的狀態(tài)通過6個(gè)常量來表示:個(gè)常量來表示: l分隔條面板分隔條面板 分隔條面板將一個(gè)面板分為兩部分,兩部分之間被分隔條面板將一個(gè)面板分為兩部分,兩部分之間被 一個(gè)分隔條隔開,用戶可以拖動分隔條來改變左右一個(gè)分隔條隔開,用戶可以拖動分隔條來改變左右 面板的大小,如下圖所示:面板的大小,如下圖所示: l分隔條面板分隔條面板 分隔條面板由分隔條面板由JSplitPane對象實(shí)現(xiàn)對象實(shí)現(xiàn) 左右兩部

23、分分別是兩個(gè)子面板,子面板一般是滾動左右兩部分分別是兩個(gè)子面板,子面板一般是滾動 條面板條面板 下面的代碼用來創(chuàng)建分隔條面板:下面的代碼用來創(chuàng)建分隔條面板: JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrolll, scroll2); split.setDividerSize(8); split.setOneTouchExpandable(true); getContentPane().add(split, BorderLayout.CENTER); l分隔條面板分隔條面板 用戶可以用鼠標(biāo)左右拖動分隔條,來改

24、變兩個(gè)子面用戶可以用鼠標(biāo)左右拖動分隔條,來改變兩個(gè)子面 板的大小板的大小 分隔條上部的兩個(gè)小三角形,它們分別用來完全展分隔條上部的兩個(gè)小三角形,它們分別用來完全展 開一側(cè)子面板,同時(shí)壓縮另一側(cè)開一側(cè)子面板,同時(shí)壓縮另一側(cè) l標(biāo)簽頁面板標(biāo)簽頁面板 標(biāo)簽頁面板是一種特殊的面板標(biāo)簽頁面板是一種特殊的面板 在標(biāo)簽頁面板中,幾個(gè)不同的子面板共享同一處空在標(biāo)簽頁面板中,幾個(gè)不同的子面板共享同一處空 間間 每個(gè)子面板上面有一個(gè)小小的標(biāo)簽,當(dāng)用戶點(diǎn)擊標(biāo)每個(gè)子面板上面有一個(gè)小小的標(biāo)簽,當(dāng)用戶點(diǎn)擊標(biāo) 簽時(shí),對應(yīng)的子面板就會顯示出來簽時(shí),對應(yīng)的子面板就會顯示出來 下圖顯示的是一個(gè)有兩個(gè)子面板的標(biāo)簽頁面板,每下圖顯示

25、的是一個(gè)有兩個(gè)子面板的標(biāo)簽頁面板,每 個(gè)子面板中顯示不同的內(nèi)容:個(gè)子面板中顯示不同的內(nèi)容: l標(biāo)簽頁面板標(biāo)簽頁面板 l標(biāo)簽頁面板標(biāo)簽頁面板 創(chuàng)建標(biāo)簽頁面板的程序代碼如下:創(chuàng)建標(biāo)簽頁面板的程序代碼如下: JTabbedPane tabbed = new JTabbedPane(); tabbed.addTab(第一頁第一頁, null, scrolll, 這是第一頁內(nèi)容這是第一頁內(nèi)容); tabbed.addTab(第二頁第二頁, null, scroll2, 這是第二頁內(nèi)容這是第二頁內(nèi)容); l標(biāo)簽頁面板標(biāo)簽頁面板 addTab函數(shù)帶有四個(gè)參數(shù):函數(shù)帶有四個(gè)參數(shù): l參數(shù)參數(shù)1:標(biāo)簽頁的名稱,

26、這個(gè)名稱將顯示在面板頂部的?。簶?biāo)簽頁的名稱,這個(gè)名稱將顯示在面板頂部的小 小標(biāo)簽上;小標(biāo)簽上; l參數(shù)參數(shù)2:標(biāo)簽上顯示的圖標(biāo)對象。如果沒有圖標(biāo),則設(shè)為:標(biāo)簽上顯示的圖標(biāo)對象。如果沒有圖標(biāo),則設(shè)為 null即可;即可; l參數(shù)參數(shù)3:需要顯示的子面板對象;:需要顯示的子面板對象; l參數(shù)參數(shù)4:標(biāo)簽頁的提示文字,當(dāng)用戶將鼠標(biāo)在標(biāo)簽上停留:標(biāo)簽頁的提示文字,當(dāng)用戶將鼠標(biāo)在標(biāo)簽上停留 幾秒鐘后,提示文字就會出現(xiàn),如下圖所示:幾秒鐘后,提示文字就會出現(xiàn),如下圖所示: l標(biāo)簽頁面板標(biāo)簽頁面板 l工具欄工具欄 工具欄是圖形界面程序常用的組件,它將一組按鈕工具欄是圖形界面程序常用的組件,它將一組按鈕 排成

27、一行,放在程序的頂端排成一行,放在程序的頂端 工具欄一般作為菜單欄的補(bǔ)充,為菜單欄中常用的工具欄一般作為菜單欄的補(bǔ)充,為菜單欄中常用的 命令提供一種快捷的執(zhí)行方法命令提供一種快捷的執(zhí)行方法 l工具欄工具欄 工具欄通過工具欄通過JToolBar對象來實(shí)現(xiàn):對象來實(shí)現(xiàn): JToolBar toolBar = new JToolBar(); toolBar.add(button1); toolBar.add(button2); frame.getContentPane().add(toolBar, BorderLayout.PAGE_START); l工具欄工具欄 工具欄中還可以設(shè)置分隔條,分隔條將

28、按鈕分隔開,工具欄中還可以設(shè)置分隔條,分隔條將按鈕分隔開, 以達(dá)到分組的目的:以達(dá)到分組的目的: 分隔條通過分隔條通過addSeparator函數(shù)來添加,效果如下圖函數(shù)來添加,效果如下圖 所示:所示: toolBar.add(button2); toolBar.addSeparator(); toolBar.add(button3); l工具欄工具欄 工具欄可以靈活拖動,只需要用鼠標(biāo)拖動左側(cè)的豎工具欄可以靈活拖動,只需要用鼠標(biāo)拖動左側(cè)的豎 狀凸條,就可以將工具欄拖動到上、下、左、右位狀凸條,就可以將工具欄拖動到上、下、左、右位 置,也可以浮動在框架之上置,也可以浮動在框架之上 靈活拖動的前提是

29、:靈活拖動的前提是: l內(nèi)容窗格必須用缺省的邊界型布局管理器內(nèi)容窗格必須用缺省的邊界型布局管理器 l內(nèi)容窗格里只有一個(gè)面板和一個(gè)菜單欄內(nèi)容窗格里只有一個(gè)面板和一個(gè)菜單欄 l面板放在內(nèi)容窗格的中心(面板放在內(nèi)容窗格的中心(CENTER),菜單欄放在內(nèi)容),菜單欄放在內(nèi)容 窗格的周邊(窗格的周邊(EAST, SOUTH, WEST, NORTH) l工具欄工具欄 頂級容器組件頂級容器組件 通用容器組件通用容器組件 專用容器組件專用容器組件 基本控件基本控件 不可編輯組件不可編輯組件 交互的格式組件交互的格式組件 文本組件文本組件 l內(nèi)部框架內(nèi)部框架 內(nèi)部框架常用于多文檔界面,它的特點(diǎn)是在主框架內(nèi)部

30、框架常用于多文檔界面,它的特點(diǎn)是在主框架 的內(nèi)部還有一系列子框架:的內(nèi)部還有一系列子框架: l內(nèi)部框架內(nèi)部框架 創(chuàng)建內(nèi)部框架的基本步驟如下:創(chuàng)建內(nèi)部框架的基本步驟如下: (1) 創(chuàng)建內(nèi)部框架對象創(chuàng)建內(nèi)部框架對象 JInternalFrame subFrame1 = new JInternalFrame( 文檔文檔1, true, true, true, true); 內(nèi)部框架對象的構(gòu)造函數(shù)有內(nèi)部框架對象的構(gòu)造函數(shù)有5個(gè)參數(shù):個(gè)參數(shù): l參數(shù)參數(shù)1:顯示在子框架標(biāo)題欄上的名稱;:顯示在子框架標(biāo)題欄上的名稱; l參數(shù)參數(shù)2:設(shè)定子框架能否改變大?。唬涸O(shè)定子框架能否改變大??; l參數(shù)參數(shù)3:設(shè)定子框

31、架能否關(guān)閉;:設(shè)定子框架能否關(guān)閉; l參數(shù)參數(shù)4:設(shè)定子框架能否最大化;:設(shè)定子框架能否最大化; l內(nèi)部框架內(nèi)部框架 l參數(shù)參數(shù)5:設(shè)定子框架能否縮成一個(gè)圖標(biāo)。需要注意的是,:設(shè)定子框架能否縮成一個(gè)圖標(biāo)。需要注意的是, 子框架縮成的圖標(biāo)是在主框架的左下角,而不會在操作系子框架縮成的圖標(biāo)是在主框架的左下角,而不會在操作系 統(tǒng)的任務(wù)欄出現(xiàn):統(tǒng)的任務(wù)欄出現(xiàn): l內(nèi)部框架內(nèi)部框架 (2) 設(shè)置子框架對象的屬性設(shè)置子框架對象的屬性 l子框架的屬性包括子框架大小、位置,顯示子框架,將子子框架的屬性包括子框架大小、位置,顯示子框架,將子 框架設(shè)置成選中狀態(tài),如下面的代碼所示:框架設(shè)置成選中狀態(tài),如下面的代碼

32、所示: subFrame1.setSize(300, 300); subFrame1.setLocation(30, 30); subFrame1.setVisible(true); try subFrame1.setSelected(true); catch (java.beans.PropertyVetoException e) l內(nèi)部框架內(nèi)部框架 (3) 將子框架放在桌面面板上將子框架放在桌面面板上 l子框架不能放在普通的面板上,必須放到桌面面板子框架不能放在普通的面板上,必須放到桌面面板 (JDesktopPane)上)上 l將桌面面板作為主框架的內(nèi)容窗格,再將子框架放到桌面將桌面面板

33、作為主框架的內(nèi)容窗格,再將子框架放到桌面 面板上,如下面的代碼所示面板上,如下面的代碼所示: JDesktopPane desktop = new JDesktopPane(); desktop.setBackground(new Color(160, 160, 160); desktop.add(subFrame1); setContentPane(desktop); l分層窗格分層窗格 分層窗格是一個(gè)可以有多層的容器,作用是讓相互分層窗格是一個(gè)可以有多層的容器,作用是讓相互 重疊的組件可以按照它們重疊的次序顯示,上層的重疊的組件可以按照它們重疊的次序顯示,上層的 組件覆蓋在下層組件之上組件

34、覆蓋在下層組件之上 l根窗格根窗格 根窗格直屬于頂級的框架或?qū)υ捒?,包含了?nèi)容窗根窗格直屬于頂級的框架或?qū)υ捒?,包含了?nèi)容窗 格和菜單欄,以及分層窗格、玻璃窗格等不可見的格和菜單欄,以及分層窗格、玻璃窗格等不可見的 功能窗格,它的作用是管理所有這些窗格功能窗格,它的作用是管理所有這些窗格 頂級容器組件頂級容器組件 通用容器組件通用容器組件 專用容器組件專用容器組件 基本控件基本控件 不可編輯組件不可編輯組件 交互的格式組件交互的格式組件 文本組件文本組件 l基本控件基本控件 基本控件包括:基本控件包括: l按鈕,單選框、復(fù)選框按鈕,單選框、復(fù)選框 l下拉框下拉框 l列表框列表框 l菜單菜單 l

35、文本框文本框 它們是組成圖形用戶界面的原子控件,它們的作用它們是組成圖形用戶界面的原子控件,它們的作用 主要是從用戶那里得到輸入,同時(shí)也顯示一些簡單主要是從用戶那里得到輸入,同時(shí)也顯示一些簡單 的狀態(tài)。的狀態(tài)。 l按鈕按鈕 Swing中的按鈕有三種類型:中的按鈕有三種類型: l普通按鈕(普通按鈕(JButton) l單選框(單選框(JRadioButton) l復(fù)選框(復(fù)選框(JCheckBox) 這三類按鈕都從這三類按鈕都從AbstractButton(抽象按鈕)(抽象按鈕) 類繼承而來類繼承而來 l普通按鈕普通按鈕 Swing里的按鈕設(shè)置十分靈活,即可以顯示文字,里的按鈕設(shè)置十分靈活,即可

36、以顯示文字, 也可以顯示圖片,或者同時(shí)顯示文字和圖片也可以顯示圖片,或者同時(shí)顯示文字和圖片 下面的例子是一個(gè)簡單的按鈕演示程序,其中有下面的例子是一個(gè)簡單的按鈕演示程序,其中有3 個(gè)按鈕,程序界面如下:個(gè)按鈕,程序界面如下: l普通按鈕普通按鈕 與按鈕有關(guān)的代碼如下:與按鈕有關(guān)的代碼如下: panel = new JPanel(); b1 = new JButton(向后向后, new ImageIcon(prev.gif); b2 = new JButton(顯示當(dāng)前顯示當(dāng)前); b3 = new JButton(向前向前, new ImageIcon(next.gif); panel.ad

37、d(b1); panel.add(b2); panel.add(b3); l普通按鈕普通按鈕 JButton的構(gòu)造函數(shù)有的構(gòu)造函數(shù)有5種:種: JButton(); JButton(Action a); JButton(Icon icon); JButton(String text); JButton(String text, Icon icon); 對應(yīng)于空白按鈕,與動作關(guān)聯(lián)的按鈕,只顯示圖標(biāo)對應(yīng)于空白按鈕,與動作關(guān)聯(lián)的按鈕,只顯示圖標(biāo) 的按鈕,只顯示文字的按鈕,同時(shí)顯示文字和圖標(biāo)的按鈕,只顯示文字的按鈕,同時(shí)顯示文字和圖標(biāo) 的按鈕的按鈕 l普通按鈕普通按鈕 按鈕的功能是當(dāng)用戶點(diǎn)擊時(shí),完成一

38、項(xiàng)工作。因此按鈕的功能是當(dāng)用戶點(diǎn)擊時(shí),完成一項(xiàng)工作。因此 需要給按鈕設(shè)置動作監(jiān)聽器:需要給按鈕設(shè)置動作監(jiān)聽器: b1.addActionListener(new Buttonb1ActionListenerClass(this); class Buttonb1ActionListenerClass implements ActionListener ButtonDemo frame; public Buttonb1ActionListenerClass(ButtonDemo frame) this. frame = frame; public void actionPerformed(Acti

39、onEvent e) frame.Buttonb1ActionPerformed(e); l單選框單選框 單選框(單選框(JRadioButton)在圖形界面上顯示為若干)在圖形界面上顯示為若干 小圓點(diǎn)小圓點(diǎn) 單選框的作用是在幾個(gè)選項(xiàng)中選一項(xiàng),且只能選一單選框的作用是在幾個(gè)選項(xiàng)中選一項(xiàng),且只能選一 項(xiàng)。如下面的例子:項(xiàng)。如下面的例子: l單選框單選框 產(chǎn)生單選框的步驟:產(chǎn)生單選框的步驟: (1) 建立單選框?qū)ο蠼芜x框?qū)ο?JRadioButton radio1 = new JRadioButton(魚魚); JRadioButton radio2 = new JRadioButton(熊掌

40、熊掌, true); l單選框單選框 (2) 將相關(guān)的單選框分到一組中將相關(guān)的單選框分到一組中 建立單選框?qū)ο笠院?,并不代表這些單選框之間就建立單選框?qū)ο笠院?,并不代表這些單選框之間就 已經(jīng)具有相互排斥的關(guān)系了。已經(jīng)具有相互排斥的關(guān)系了。 對于前面建立的兩個(gè)單選框,如果你試著點(diǎn)擊一下,對于前面建立的兩個(gè)單選框,如果你試著點(diǎn)擊一下, 就會發(fā)現(xiàn)兩個(gè)單選框都可以選中:就會發(fā)現(xiàn)兩個(gè)單選框都可以選中: l單選框單選框 只有分為一組的單選框才有單選的關(guān)系,將單選框只有分為一組的單選框才有單選的關(guān)系,將單選框 分組的代碼如下:分組的代碼如下: ButtonGroup group = new ButtonGr

41、oup(); group.add(radio1); group.add(radio2); l單選框單選框 (3) 將單選框放到面板中將單選框放到面板中 panel.add(radio1); panel.add(radio2); 單選框一般是排成一行或一列單選框一般是排成一行或一列 對于按行排列的單選框,面板用缺省的流式布局對于按行排列的單選框,面板用缺省的流式布局 (FlowLayout)即可即可 對于按列排列的單選框,面板需要用盒式布局對于按列排列的單選框,面板需要用盒式布局 (BoxLayout)或表格式布局或表格式布局(GridLayout) l單選框單選框 單選框也屬于按鈕的一類,因此

42、它也可以添加單選框也屬于按鈕的一類,因此它也可以添加 ActionListener監(jiān)聽器監(jiān)聽器 當(dāng)用戶點(diǎn)擊一個(gè)單選框時(shí),會自動調(diào)用它所對應(yīng)的當(dāng)用戶點(diǎn)擊一個(gè)單選框時(shí),會自動調(diào)用它所對應(yīng)的 監(jiān)聽器,去完成相應(yīng)的操作監(jiān)聽器,去完成相應(yīng)的操作 更常見的情況是,用戶點(diǎn)擊單選框時(shí)不需要執(zhí)行什更常見的情況是,用戶點(diǎn)擊單選框時(shí)不需要執(zhí)行什 么操作,只是選中一項(xiàng)么操作,只是選中一項(xiàng) 在最后用戶點(diǎn)擊在最后用戶點(diǎn)擊“確定確定”按鈕時(shí),再查詢單選框的按鈕時(shí),再查詢單選框的 狀態(tài)狀態(tài) l單選框單選框 對于這種情況,就不需要給單選框添加監(jiān)聽器了,對于這種情況,就不需要給單選框添加監(jiān)聽器了, 如下面的代碼:如下面的代碼:

43、if (radio1.isSelected() System.out.println(你選擇了魚。你選擇了魚。); if (radio2.isSelected() System.out.println(你選擇了熊掌。你選擇了熊掌。); 在在“確定確定”按鈕的事件處理函數(shù)中,調(diào)用單選框的按鈕的事件處理函數(shù)中,調(diào)用單選框的 isSelected函數(shù)查詢它是否被選中函數(shù)查詢它是否被選中 l復(fù)選框復(fù)選框 復(fù)選框(復(fù)選框(JCheckBox)與單選框的作用相似,也是)與單選框的作用相似,也是 選擇一些選項(xiàng),不同的是這些選項(xiàng)之間沒有相互排選擇一些選項(xiàng),不同的是這些選項(xiàng)之間沒有相互排 斥的關(guān)系斥的關(guān)系 復(fù)選

44、框的外形是方形小框復(fù)選框的外形是方形小框 ,如果你選中了一個(gè)復(fù),如果你選中了一個(gè)復(fù) 選框,小框中會出現(xiàn)一個(gè)對勾選框,小框中會出現(xiàn)一個(gè)對勾 。 l復(fù)選框復(fù)選框 創(chuàng)建復(fù)選框的代碼如下:創(chuàng)建復(fù)選框的代碼如下: JCheckBox check1 = new JCheckBox(音樂音樂); JCheckBox check2 = new JCheckBox(文學(xué)文學(xué)); JCheckBox check3 = new JCheckBox(體育體育, true); JCheckBox check4 = new JCheckBox(電視電視); JCheckBox check5 = new JCheckBox

45、(旅游旅游, true); 復(fù)選框的創(chuàng)建分兩步:復(fù)選框的創(chuàng)建分兩步: l創(chuàng)建一個(gè)復(fù)選框控件對象創(chuàng)建一個(gè)復(fù)選框控件對象 l將復(fù)選框控件放到面板上將復(fù)選框控件放到面板上 l復(fù)選框復(fù)選框 常用的復(fù)選框?qū)ο髽?gòu)造函數(shù)有兩種常用的復(fù)選框?qū)ο髽?gòu)造函數(shù)有兩種 第一種構(gòu)造函數(shù)只有一個(gè)參數(shù),就是復(fù)選框右側(cè)顯第一種構(gòu)造函數(shù)只有一個(gè)參數(shù),就是復(fù)選框右側(cè)顯 示的文字示的文字 第二種構(gòu)造函數(shù)有兩個(gè)參數(shù),第二個(gè)參數(shù)是一個(gè)邏第二種構(gòu)造函數(shù)有兩個(gè)參數(shù),第二個(gè)參數(shù)是一個(gè)邏 輯型變量:輯型變量: l參數(shù)的值為真,表示缺省選中該復(fù)選框參數(shù)的值為真,表示缺省選中該復(fù)選框 l參數(shù)的值為假,表示缺省不選中該復(fù)選框參數(shù)的值為假,表示缺省不選

46、中該復(fù)選框 與單選框不同,復(fù)選框之間沒有互斥的關(guān)系,因此與單選框不同,復(fù)選框之間沒有互斥的關(guān)系,因此 不需要分組不需要分組 l復(fù)選框復(fù)選框 與單選框類似,復(fù)選框也屬于按鈕的一類,因此它與單選框類似,復(fù)選框也屬于按鈕的一類,因此它 也可以添加也可以添加ActionListener監(jiān)聽器監(jiān)聽器 當(dāng)用戶點(diǎn)擊一個(gè)復(fù)選框時(shí),會自動調(diào)用它所對應(yīng)的當(dāng)用戶點(diǎn)擊一個(gè)復(fù)選框時(shí),會自動調(diào)用它所對應(yīng)的 監(jiān)聽器,去完成相應(yīng)的操作監(jiān)聽器,去完成相應(yīng)的操作 更常見的情況是,用戶點(diǎn)擊復(fù)選框時(shí)不需要執(zhí)行什更常見的情況是,用戶點(diǎn)擊復(fù)選框時(shí)不需要執(zhí)行什 么操作,只是選中它么操作,只是選中它 在最后用戶點(diǎn)擊在最后用戶點(diǎn)擊“確定確定”

47、按鈕時(shí),再逐一查詢每個(gè)按鈕時(shí),再逐一查詢每個(gè) 復(fù)選框的狀態(tài)。在這種情況下,就不需要給復(fù)選框復(fù)選框的狀態(tài)。在這種情況下,就不需要給復(fù)選框 添加監(jiān)聽器了添加監(jiān)聽器了 l復(fù)選框復(fù)選框 在函數(shù)中,調(diào)用復(fù)選框的在函數(shù)中,調(diào)用復(fù)選框的isSelected函數(shù)查詢它是否函數(shù)查詢它是否 被選中,如下面的代碼所示:被選中,如下面的代碼所示: System.out.print(你的興趣愛好有:你的興趣愛好有:); if (check1.isSelected() System.out.print(音樂音樂 ); if (check2.isSelected() System.out.print(文學(xué)文學(xué) ); if

48、(check3.isSelected() System.out.print(體育體育 ); if (check4.isSelected() System.out.print(電視電視 ); if (check5.isSelected() System.out.print(旅游旅游 ); l下拉框下拉框 下拉框又叫組合框(下拉框又叫組合框(JComboBox),是一種多個(gè)選),是一種多個(gè)選 項(xiàng)中選擇一個(gè)的組件項(xiàng)中選擇一個(gè)的組件 從功能上看,它和前面的單選框很像,但是下拉框從功能上看,它和前面的單選框很像,但是下拉框 平時(shí)只占用一行文本的空間平時(shí)只占用一行文本的空間 只有當(dāng)用戶點(diǎn)擊時(shí)才會向下彈出所

49、有的選項(xiàng),因此只有當(dāng)用戶點(diǎn)擊時(shí)才會向下彈出所有的選項(xiàng),因此 它比單選框要節(jié)省空間它比單選框要節(jié)省空間 下拉框可以很方便地增加、刪除選項(xiàng)下拉框可以很方便地增加、刪除選項(xiàng) l下拉框下拉框 下拉框分為兩類:下拉框分為兩類: l不可編輯的下拉框:用戶只能從預(yù)設(shè)的項(xiàng)中選擇不可編輯的下拉框:用戶只能從預(yù)設(shè)的項(xiàng)中選擇 l可編輯的下拉框:允許用戶編輯、修改文本可編輯的下拉框:允許用戶編輯、修改文本 下拉框由兩部分組成:下拉框由兩部分組成: l文本框,它一直存在,顯示用戶選擇的文本;文本框,它一直存在,顯示用戶選擇的文本; l彈出式列表,顯示所有預(yù)設(shè)的選項(xiàng),它只有在用彈出式列表,顯示所有預(yù)設(shè)的選項(xiàng),它只有在用

50、戶點(diǎn)擊下拉框右側(cè)的三角形按鈕時(shí)才會出現(xiàn)戶點(diǎn)擊下拉框右側(cè)的三角形按鈕時(shí)才會出現(xiàn) l下拉框下拉框 例題:兩個(gè)下拉框,左圖是普通狀態(tài),右圖是下拉例題:兩個(gè)下拉框,左圖是普通狀態(tài),右圖是下拉 框展開時(shí)的狀態(tài)框展開時(shí)的狀態(tài) l下拉框下拉框 String comboStr1 = 10歲以下歲以下, 1120歲歲, 2030歲歲, 3040歲歲, 4050歲歲, 5060歲歲, 60歲以上歲以上; JComboBox combo1 = new JComboBox(comboStr1); panel.add(combo1); l下拉框下拉框 這種方法創(chuàng)建的是不可編輯的下拉框,只這種方法創(chuàng)建的是不可編輯的下拉框

51、,只 能從預(yù)設(shè)的選項(xiàng)中選擇能從預(yù)設(shè)的選項(xiàng)中選擇 右圖給出不可編輯的下拉框在收起和下拉右圖給出不可編輯的下拉框在收起和下拉 狀態(tài)下的界面外觀狀態(tài)下的界面外觀 在下拉框收起的時(shí)候,所有內(nèi)容都變成深在下拉框收起的時(shí)候,所有內(nèi)容都變成深 藍(lán)色背景,無法修改其中的內(nèi)容藍(lán)色背景,無法修改其中的內(nèi)容 l下拉框下拉框 創(chuàng)建可編輯的下拉框,需要調(diào)用創(chuàng)建可編輯的下拉框,需要調(diào)用setEditable函數(shù)設(shè)函數(shù)設(shè) 置下拉框的屬性:置下拉框的屬性: String comboStr2 = 足球足球,籃球籃球,羽毛球羽毛球,乒乓球乒乓球,象棋象棋 ,圍棋圍棋; JComboBox combo2 = new JComboB

52、ox(comboStr2); combo2.setEditable(true); panel.add(combo2); l下拉框下拉框 與單選框、復(fù)選框一樣,下拉框一般也是在用戶點(diǎn)與單選框、復(fù)選框一樣,下拉框一般也是在用戶點(diǎn) 擊擊“確定確定”按鈕之后才處理其內(nèi)容按鈕之后才處理其內(nèi)容 lgetSelectedItem函數(shù),得到選擇的文本函數(shù),得到選擇的文本 lgetSelectedIndex函數(shù),得到選擇的項(xiàng)函數(shù),得到選擇的項(xiàng) l下拉框下拉框 還有兩個(gè)函數(shù)也很常用:還有兩個(gè)函數(shù)也很常用: lgetItemAt函數(shù),獲得某項(xiàng)選項(xiàng)的內(nèi)容,函數(shù),獲得某項(xiàng)選項(xiàng)的內(nèi)容, lgetItemCount函數(shù),獲

53、得選項(xiàng)的數(shù)量。函數(shù),獲得選項(xiàng)的數(shù)量。 這兩個(gè)函數(shù)相結(jié)合,可以得到所有的預(yù)設(shè)選這兩個(gè)函數(shù)相結(jié)合,可以得到所有的預(yù)設(shè)選 項(xiàng),如下面的代碼所示:項(xiàng),如下面的代碼所示: for (int i = 0; i combo2.getItemCount(); i+) System.out.println(combo2.getItemAt(i); l下拉框下拉框 下拉框還提供一系列函數(shù)用于添加、插入、刪除選下拉框還提供一系列函數(shù)用于添加、插入、刪除選 項(xiàng),這些函數(shù)列舉如下:項(xiàng),這些函數(shù)列舉如下: / 在預(yù)設(shè)選項(xiàng)列表的最后添加一項(xiàng),在預(yù)設(shè)選項(xiàng)列表的最后添加一項(xiàng),anItem為添加的字符串對象為添加的字符串對象 v

54、oid addItem(Object anItem); / 在預(yù)設(shè)列表中插入一項(xiàng),在預(yù)設(shè)列表中插入一項(xiàng),anItem為添加的字符串對象,為添加的字符串對象,index為插入的位置為插入的位置 void insertItemAt(Object anItem, int index); / 移去內(nèi)容與移去內(nèi)容與anItem相同的預(yù)設(shè)選項(xiàng)相同的預(yù)設(shè)選項(xiàng) void removeItem(Object anItem); / 移去序號為移去序號為index的預(yù)設(shè)選項(xiàng)的預(yù)設(shè)選項(xiàng) void removeItemAt(int index); / 移去所有的預(yù)設(shè)選項(xiàng)移去所有的預(yù)設(shè)選項(xiàng) void removeAllI

55、tems(); l列表框列表框 列表框的作用是給出一系列選項(xiàng),用戶可以進(jìn)行單列表框的作用是給出一系列選項(xiàng),用戶可以進(jìn)行單 選或多選選或多選 從功能上,列表框與復(fù)選框的功能接近,不過列表從功能上,列表框與復(fù)選框的功能接近,不過列表 框比復(fù)選框更加靈活框比復(fù)選框更加靈活 從外觀上,列表框與下拉框比較接近,不過列表框從外觀上,列表框與下拉框比較接近,不過列表框 是一直存在的,而下拉框的列表只有在鼠標(biāo)點(diǎn)擊時(shí)是一直存在的,而下拉框的列表只有在鼠標(biāo)點(diǎn)擊時(shí) 才會出現(xiàn)才會出現(xiàn) 下圖是一個(gè)簡單的列表框界面:下圖是一個(gè)簡單的列表框界面: l列表框列表框 l列表框列表框 列表框的建立分以下三步:列表框的建立分以下三

56、步: (1) 創(chuàng)建列表框?qū)ο髣?chuàng)建列表框?qū)ο?列表框是列表框是JList類的對象。與下拉框類似,在創(chuàng)建列類的對象。與下拉框類似,在創(chuàng)建列 表框?qū)ο髸r(shí),一般需要在構(gòu)造函數(shù)中通過一個(gè)字符表框?qū)ο髸r(shí),一般需要在構(gòu)造函數(shù)中通過一個(gè)字符 串?dāng)?shù)組給出選項(xiàng)內(nèi)容:串?dāng)?shù)組給出選項(xiàng)內(nèi)容: String listStr = 足球足球,籃球籃球,排球排球,網(wǎng)球網(wǎng)球,羽毛球羽毛球, 乒乓球乒乓球,游泳游泳,長跑長跑,登山登山,象棋象棋,圍棋圍棋,橋牌橋牌; JList list = new JList(listStr); l列表框列表框 (2) 設(shè)置列表框?qū)傩栽O(shè)置列表框?qū)傩?在創(chuàng)建列表框以后,需要設(shè)置它的三個(gè)屬性:選項(xiàng)在

57、創(chuàng)建列表框以后,需要設(shè)置它的三個(gè)屬性:選項(xiàng) 模式、布局方向以及可見的行數(shù)模式、布局方向以及可見的行數(shù) 選項(xiàng)模式有三種:選項(xiàng)模式有三種: l單項(xiàng)選擇:只能選擇一項(xiàng)單項(xiàng)選擇:只能選擇一項(xiàng) l區(qū)間選擇:可以選擇一個(gè)區(qū)間范圍區(qū)間選擇:可以選擇一個(gè)區(qū)間范圍 l多項(xiàng)選擇:可以選擇一個(gè)區(qū)間,或幾個(gè)文件多項(xiàng)選擇:可以選擇一個(gè)區(qū)間,或幾個(gè)文件 l列表框列表框 下圖顯示了三種選項(xiàng)模式的區(qū)別:下圖顯示了三種選項(xiàng)模式的區(qū)別: l列表框列表框 選項(xiàng)模式通過選項(xiàng)模式通過setSelectionMode函數(shù)來設(shè)定,函數(shù)的參函數(shù)來設(shè)定,函數(shù)的參 數(shù)表示三種選擇模式:數(shù)表示三種選擇模式: / 設(shè)置為單項(xiàng)選擇模式設(shè)置為單項(xiàng)選擇模

58、式 list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); / 設(shè)置為區(qū)間選擇模式設(shè)置為區(qū)間選擇模式 list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SEL ECTION); / 設(shè)置為多項(xiàng)選擇模式設(shè)置為多項(xiàng)選擇模式 list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_S ELECTION); l列表框列表框 列表框的布局方向也有三種:列表框的布局方向也有三種: l橫向換行:選項(xiàng)按行排列,一行放不下時(shí)

59、換行放橫向換行:選項(xiàng)按行排列,一行放不下時(shí)換行放 置,如果行數(shù)太多,就添加上下滾動的豎滾條;置,如果行數(shù)太多,就添加上下滾動的豎滾條; l縱向換列:選項(xiàng)按列排列,一列放不下的話就換縱向換列:選項(xiàng)按列排列,一列放不下的話就換 一列放置,如果列數(shù)太多,就添加左右滾動的橫一列放置,如果列數(shù)太多,就添加左右滾動的橫 滾條;滾條; l縱向布局:簡單地將選項(xiàng)放在一列中,如果項(xiàng)目縱向布局:簡單地將選項(xiàng)放在一列中,如果項(xiàng)目 數(shù)太多,就添加豎滾條以上下滾動;數(shù)太多,就添加豎滾條以上下滾動; l缺省的布局方向是縱向布局缺省的布局方向是縱向布局 l列表框列表框 下圖給出了三種布局方向的外觀:下圖給出了三種布局方向的

60、外觀: l列表框列表框 布局方向通過布局方向通過setLayoutOrientation函數(shù)來設(shè)置,該函數(shù)來設(shè)置,該 函數(shù)的參數(shù)表示三種布局方向,如下面的代碼所示:函數(shù)的參數(shù)表示三種布局方向,如下面的代碼所示: / 設(shè)置為橫向換行設(shè)置為橫向換行 list.setLayoutOrientation(JList.HORIZONTAL_WRAP); / 設(shè)置為縱向換列設(shè)置為縱向換列 list.setLayoutOrientation(JList.VERTICAL_WRAP); / 設(shè)置為縱向布局設(shè)置為縱向布局 list.setLayoutOrientation(JList.VERTICAL); l列

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論