版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一講:JavaSwing組件技術(shù)
在本單元您能了解如下知識點:Swing的“外觀和感覺”;Swing容器組件的編程;Swing中的標準對話框;
Swing基本組件的編程;Swing的編程具體應用—設(shè)計出文本編輯器一、JavaSwing組件技術(shù)簡介
Swing特性:是AWT的擴展,它比AWT提供了更多的組件和外觀。是Sun公司的新一代的圖形界面的標準。Swing組件的實現(xiàn)不包括任何于平臺相關(guān)的代碼它是純Java代碼(但Jframe、JDialog、JApplet除外),因此與平臺無關(guān)。AWT的缺點: 組件少而且是本地代碼實現(xiàn)。Swing和AWT相比,一個重要改進在于Swing把一個組件的處理分為圖形部分和數(shù)據(jù)部分。其中圖形部分由編程環(huán)境統(tǒng)一處理(V)而數(shù)據(jù)部分由一個數(shù)據(jù)處理模型進行處理(M)。Swing組件所在的包:javax.swing
每個組件都以“J”開頭,各個組件都是JComponent的子類。
Swing中的各個組件的事件編程、容器的布局方式仍然與AWT中對應的編程一致,沒有改變。Swing編程所應該注意的問題
1、由于Swing中的各個組件類與AWT的組件類有相同的基類,所以可以在同一界面中同時使用Swing與AWT。但有時可能不能正常顯示,最好不要合用。
2、正確理解重量組件與輕量組件的不同輕量組件—Swing組件,由純Java代碼實現(xiàn),占用系統(tǒng)資源少。重量組件--AWT組件,由本地C代碼實現(xiàn),占用系統(tǒng)資源多。另外JFrame、JDialog、JApplet也是重量組件。二、Swing的“外觀和感覺”(LookandFeel)1、Swing提供了三種“外觀和感覺”。Windows系統(tǒng);MotifXWindow系統(tǒng)(UNIX下)Metal(Swing的新的交平臺)。
2、意義:通過LookandFeel機制,我們可以使程序的設(shè)計者任意轉(zhuǎn)換程序的人機界面來對應不同的操作系統(tǒng)平臺。3、設(shè)置方法
(1)靜態(tài)--設(shè)計時設(shè)定
(2)動態(tài)--運行時設(shè)定(1)設(shè)計時設(shè)定---使用Swing的新的交平臺try{ UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName()); } catch(Exceptionexc) { System.err.println("ErrorloadingL&F:"+exc); }(1)設(shè)計時設(shè)定---使用目標系統(tǒng)平臺的外觀
(如在Windows系統(tǒng)下為Windows的外觀)
try{ UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName()
); } catch(Exceptionexc) { System.err.println("ErrorloadingL&F:"+exc); }(1)設(shè)計時設(shè)定---強制為某一種系統(tǒng)平臺
原理:加載對應的GUI驅(qū)動程序的類。UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");UIManager.setLookAndFeel(
"javax.swing.plaf.metal.MetalLookAndFeel");(2)運行時動態(tài)地設(shè)定1、方法UIManager.setLookAndFeel(
“javax.swing.plaf.metal.MetalLookAndFeel”
);
SwingUtilities.updateComponentTreeUI(this);
//對由this所指示的組件重新設(shè)置外觀
2、注意:由于JFrame、JApplet等為重量級組件,因此它的外觀只與操作系統(tǒng)平臺有關(guān)系,在相同的操作系統(tǒng)平臺下表現(xiàn)出相同的外觀。
三、Swing組件的分類JPanel、JScrollPanel、JToolbarJSplitPanel、JTabbedPanel、JLayeredPanel、JRootPaneInternalFrame、頂級容器JFrame、JApplet、JDialog普通功能的容器特殊功能的容器基本組件不可編輯信息顯示組件可編輯格式化信息顯示組件JButton、JCombobox、JList、JMenu、JSlider、JTextField等JLabel、JProgressBar、JToolTip等JColorChooser、JFileChooser、Jtabel、JTextArea、JTree等四、在Swing容器中添加組件
對JFrame與JApplet等頂級的容器,在添加組件時與AWT不同點是不能直接調(diào)用容器的add()方法。
四、在Swing容器中添加組件(續(xù)一)
(1)獲得當前容器的內(nèi)容面板對象,利用getContentPane()(其定義為publicContainergetContentPane()),再調(diào)用容器的add()方法來加人各個其它組件;
(2)先利用JPanel類生成一個內(nèi)容面板對象,并將各個組件加入該內(nèi)容面板對象中,然后再調(diào)用setContentPane()方法(其定義為publicvoidsetContentPane(ContainercontentPane))將內(nèi)容面板對象加入到當前容器中。
2、JFrame
編程(1)它為Frame的升級,代表應用程序的主窗口。(2)編程的基本方法為:創(chuàng)建JFrame類的子類;在自己的子類的構(gòu)造函數(shù)中調(diào)用上層基類的構(gòu)造函數(shù);設(shè)置窗口的大?。辉O(shè)置在用戶關(guān)閉窗口時則應該完成什么行為;最后顯示出窗口。
示例代碼importjavax.swing.*;publicclassJFrameTestextendsJFrame{publicJFrameTest(Stringtitle) { super(title); setSize(400,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } publicstaticvoidmain(Stringarg[]) { JFrameTestjframe=newJFrameTest(“窗口標題條文字”); }}3、菜單條式菜單
相關(guān)的類:通過JMenuBar類(利用setJMenuBar()方法加入窗口中)JMenu(級聯(lián))JMenuItem(菜單項目)JCheckBoxMenuItem(選擇性的菜單項目)、JRadioButtonMenuItem(選擇性的菜單項目但為圓點)。編程要點:一、產(chǎn)生快捷鍵mnuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK);二、添加分割條
mnuFile.addSeparator();菜單條式菜單編程要點三、給菜單加上圖標mnuFileNew.setIcon(newImageIcon(".\\images\\new.gif"));
四、給菜單加上助記符
mnuFile.setMnemonic('F');
五、要使得多個JRadioButtonMenuItem項目產(chǎn)生單選的效果,可以將它們放入一個ButtonGroup組件中;否則為多選效果4、工具條JToolBar
在Swing中的窗口工具條是由JToolBar來實現(xiàn),它也是一種容器并按照行或列對組件(它們一般為按鈕)進行分組。
缺省時為水平方向但可以使用SwingConstants.HORIZONTAL或者SwingConstants.VERTICAL來設(shè)置其方向。
構(gòu)造函數(shù):JToolBar()創(chuàng)建出水平方向的工具條(缺省為HORIZONTAL)。JToolBar(intorientation)創(chuàng)建出指定方向的工具條。JToolBar(Stringname)創(chuàng)建出指定名稱的工具條。JToolBar(Stringname,intorientation)創(chuàng)建出指定方向和名稱的工具條。工具條上的工具按鈕的事件編程:
類似于一般的按鈕事件編程,可以分別為各個不同的按鈕單獨進行事件編程。
編程方法:創(chuàng)建出JToolBar對象然后采用add(Object)方法將組件(可以為按鈕或其它組件)加入到工具條中。最后再將工具條加入到內(nèi)容面板中
編程實例:工具條JToolBar
5、標準對話框
Swing中提供了JOptionPane類來實現(xiàn)類似Windows平臺下的MessageBox的功能,同樣在Java中也有。
利用JOptionPane類中的各個static方法來生成各種標準的對話框,實現(xiàn)顯示出信息、提出問題、警告、用戶輸入?yún)?shù)等功能。這些對話框都是模式對話框。
ConfirmDialog---確認對話框,提出問題,然后由用戶自己來確認(按“Yes”或“No”按鈕)InputDialog---提示輸入文本MessageDialog---顯示信息OptionDialog—組合其它三個對話框類型。標準對話框
這四個對話框可以采用showXXXDialog()來顯示,如:
showConfirmDialog()顯示確認對話框
showInputDialog()顯示輸入文本對話框
showMessageDialog()顯示信息對話框
showOptionDialog()顯示選擇性的對話框。
showXXXDialog()方法的參數(shù)說明①ParentComponent:指示對話框的父窗口對象,一般為當前窗口。也可以為null即采用缺省的Frame作為父窗口,此時對話框?qū)⒃O(shè)置在屏幕的正中。
②message:指示要在對話框內(nèi)顯示的描述性的文字③Stringtitle:標題條文字串
④Component:在對話框內(nèi)要顯示的組件(如按鈕)⑤Icon:在對話框內(nèi)要顯示的圖標showXXXDialog()方法的參數(shù)說明⑥messageType:一般可以為如下的值ERROR_MESSAGEINFORMATION_MESSAGEWARNING_MESSAGEQUESTION_MESSAGEPLAIN_MESSAGE
⑦optionType:它決定在對話框的底部所要顯示的按鈕選項。一般可以為DEFAULT_OPTIONYES_NO_OPTIONYES_NO_CANCEL_OPTIONOK_CANCEL_OPTION。
顯示為MessageDialogJOptionPane.showMessageDialog(null,
“在對話框內(nèi)顯示的描述性的文字”,
“標題條文字串”,
JOptionPane.ERROR_MESSAGE);應用場合:功能完成后的信息提示顯示為ConfirmDialog
intResult=JOptionPane.showConfirmDialog(this,
"AreYousuretoDeleteFile?",
"FileDelete",
JOptionPane.YES_NO_CANCEL_OPTION); if(Result==JOptionPane.YES_OPTION) { }應用場合:訊問并等待用戶確認顯示InputDialog--讓用戶進行輸入StringinputValue= JOptionPane.showInputDialog( "Pleaseinputavalue");Object[]possibleValues={ "First","Second","Third"};//用戶的選擇項目ObjectselectedValue=JOptionPane.showInputDialog(null,“請在下拉列表框內(nèi)選擇一個項目”,"請輸入數(shù)據(jù)",JOptionPane.INFORMATION_MESSAGE,null,possibleValues,possibleValues[0]);setTitle("您按下了"+(String)selectedValue+"項目"); 顯示InputDialog讓用戶進行選擇地輸入顯示OptionDialog
該種對話框可以由用戶自己來設(shè)置各個按鈕的個數(shù)并返回用戶點擊各個按鈕的序號(從0開始計數(shù))Object[]options={"確定","取消","幫助"};intresponse=JOptionPane.showOptionDialog(this,“這是個選項對話框,用戶可以選擇自己的按鈕的個數(shù)”,“選項對話框標題”,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]); if(response==0) { this.setTitle("您按下了第OK按鈕
"); } elseif(response==1) { this.setTitle("您按下了第Cancel按鈕
"); }6、通用對話框
1、文件打開或保存JFileChooser
類創(chuàng)建代碼JFileChooseropenFileDialog=newJFileChooser();openFileDialog.setDialogTitle("請您打開您的文件");openFileDialog.setCurrentDirectory(newFile(currentDir));intreturnResult=openFileDialog.showOpenDialog(this);if(returnResult==JFileChooser.APPROVE_OPTION)//識別是否按下"OK" { fileName=openFileDialog.getSelectedFile().getAbsoluteFile().toString();}2、顏色選擇對話框
JColorChooser
創(chuàng)建代碼JColorChooserfontColorDialog=newJColorChooser();ColoruserSelectColor=
fontColorDialog.showDialog(this,
"請您選擇您的文字的顏色",Color.black);if(userSelectColor!=null) { setTitle(userSelectColor.toString()); }將JColorChooser置于某個容器中
一、方法:創(chuàng)建出JColorChooser類對象并使用ColorSelectionModel接口來管理用戶所選擇的顏色(利用JColorChooser類中得getSelectionModel()得到ColorSelectionModel接口類的對象,并添加ActionListener事件)。
二、代碼:JColorChoosercolorChooser=newJColorChooser(); this.add("Center",colorChooser);ColorSelectionModelselectModel=colorChooser.getSelectionModel();selectModel.addChangeListener(this);3、AWT中的文件打印對話框4、AWT中的頁面設(shè)置對話框7、用戶自定義的對話框編程要點:從JDialog類來派生;利用getContentPane().add(child);添加組件8、JScrollPane
面板
它主要為其它的控件提供Scroll功能。在Swing中與AWT中實現(xiàn)Scroll功能不同,在AWT中是由組件自己來實現(xiàn),而在Swing中則是統(tǒng)一由JScrollPane來完成。即對于需要Scroll要求的組件,必須將它添加到JScrollPane容器中,再將這個JScroolPane容器但代替可Scroll組件而添加到容器中。
構(gòu)造函數(shù):JScrollPane(Componentview,intvsbPolicy,inthsbPolicy)
其中的vsbPolicy和hsbPolicy代表ScrollBar的使用方式,JScrollPane
面板主要有如下六種常量:JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDEDJScrollPane.VERTICAL_SCROLLBAR_NEVERJScrollPane.VERTICAL_SCROLLBAR_ALWAYSJScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDEDJScrollPane.HORIZONTAL_SCROLLBAR_NEVERJScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS創(chuàng)建的代碼如下:JTextAreatextBox=newJTextArea();JScrollPanescroll=newJScrollPane(textBox,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);setContentPane(scroll);JScrollPane9、選項窗格JTabbedPane特性:它表現(xiàn)為一組文件夾頁,每個文件夾都有標題(以Windows系統(tǒng)平臺下的TabControl控件為例說明)。類:采用JTabbedPane類來表示,其內(nèi)的每個頁面為一個JPanel類或者其子類的對象。JTabbedPane類構(gòu)造函數(shù):publicJTabbedPane(inttabPlacement,inttabLayoutPolicy)其中Tabplacement可以是:JTabbedPane.TOP(表頭在上面)JTabbedPane.BOTTOM(表頭在下面)JTabbedPane.LEFT(表頭在左面)JTabbedPane.RIGHT(表頭在右面)。TablayoutPolicy可以是JTabbedPane.WRAP_TAB_LAYOUT(表頭不產(chǎn)生SCROLL效果)
JTabbedPane.SCROLL_TAB_LAYOUT(表頭產(chǎn)生SCROLL效果)。編程方法:創(chuàng)建出JTabbedPane類的對象;調(diào)用addTab()方法加入一個頁面組件;最后將JTabbedPane類的對象加入到頂級容器的ContentPane中。JTabbedPane的事件編程(1)其內(nèi)的組件事件編程:在各個頁面內(nèi)的組件的事件是獨立的,類似于正常的組件事件編程規(guī)則。
(2)編程實例:請見JTabbedPaneTest.java10、表格控件JTable
功能: 它提供以行和列的方式來顯示數(shù)據(jù),并且可以拖動列
構(gòu)造函數(shù):
JTable(Object[][]rowData,Object[]columnNames)
編程方法: 創(chuàng)建出JTable對象(可以采用表格中的表頭數(shù)組和數(shù)據(jù)數(shù)組創(chuàng)建出表格、也可以利用實現(xiàn)TableModel接口的類對象來實現(xiàn))
11、表格控件JTable的編程步驟創(chuàng)建出JTable對象(可以采用表格中的表頭數(shù)組和數(shù)據(jù)數(shù)組創(chuàng)建出表格、利用實現(xiàn)TableModel接口的類對象)
再創(chuàng)建出一個JScrollPane對象并指示其ScrollBar的使用策略;
將表格控件加入JScrollPane中;
最后將JScrollPane對象加人到頂級容器的ContentPane中12、JApplet小程序
編程要點:
它與Applet相兼容,但JApplet將JRootPane
作為它的唯一子容器,而ContentPane
是所有的JApplet的各個內(nèi)部的對象的容器。即在JApplet中增加子控件應該采用getContentPane().add(child);
缺省的ContentPane的布局方式為BorderLayout。
13、彈出式菜單JPopupMenu編程方法類同于AWT中的PopupMenu。
14、JButton與JToggleButton按鈕
創(chuàng)建它們的方式基本是相同的,不同點在于事件的監(jiān)聽上。對JButton應該監(jiān)聽ActionListener接口而對JToggleButton則要監(jiān)聽ItemListener接口從而可以識別是否被按下或者彈取。
JButton
編程要點之一一、在JButton上產(chǎn)生Rollover圖象變化效果(鼠標光標放在它上面與離開它時會產(chǎn)生不同的圖形效果)。二、代碼:
ContainercontentPane=f.getContentPane();Iconrollover=newImageIcon(".\\icons\\address1.jpg");Icongeneral=newImageIcon(".\\icons\\address2.jpg");Iconpress=newImageIcon(".\\icons\\address3.jpg");JButtonb=newJButton();b.setRolloverEnabled(true);b.setIcon(general);//設(shè)置按鈕正常狀態(tài)的圖象
b.setRolloverIcon(rollover); //設(shè)置指向時的圖象
b.setPressedIcon(press);//設(shè)置在按下按鈕時的圖象
contentPane.add(b);JButton
編程要點之二一、設(shè)置按鈕上的快捷鍵(Alt+字母)二、代碼:ContainercontentPane=f.getContentPane();JButtonb=newJButton("Opennewwindow");b.setMnemonic('O'); //設(shè)置快捷鍵為“Alt+O”b.addActionListener(this);contentPane.add(b);JButton
編程要點之三一、設(shè)置默認的按鈕:在設(shè)計對話框時,可以設(shè)置某個按鈕為默認的按鈕,當按下Enter鍵時將自動執(zhí)行該默認的按鈕所提供的功能。
二、方法:
調(diào)用JrootPane類中的setDefaultButton()方法來指定某一個按鈕為該對話框的默認的按鈕。15、JCheckBox與JRadioButton它們兩著在創(chuàng)建的方式上的差別是,JRadioButton應該放入一個組對象中以形成互斥效果。在事件的編程上都是要監(jiān)聽ActionListener接口,從而可以識別是否被按下或者彈取。
編程代碼
elseif(parm1.getSource()==toolBarItem) { if(toolBarItem.getState()) { toolBarItem.setSelected(truethis.getContentPane().add(mainToolBar,BorderLayout.NORTH); } else {
toolBarItem.setSelected(false); this.getContentPane().remove(mainToolBar); } toolBarPopupItem.setSelected(toolBarItem.isSelected()); this.show(); }16、圖像圖標
ImageIcon
圖像圖標:可以為按鈕和標簽提供圖標。在Swing中采用ImageIcon類來表示。
創(chuàng)建方法:
ImageIconicon=newImageIcon(“image.gif”);JButtonok=newJButton(icon);
注意:如果想在Applet程序中使用ImageIcon,則由于Applet程序的的安全控制機制的原因。比如在JavaApplication中使用了ImageIcon對象,那么可以采用newImageIcon(Stringfilename)而在JavaApplet程序中則必須用newImageIcon(URLlocation)來替換。因為前一種讀的是本地文件,而Applet不允許直接讀取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南師范大學《學科教學法》2023-2024學年第一學期期末試卷
- 二零二五年度辦公設(shè)備智能倉儲與配送服務合同3篇
- 二零二五年度新能源汽車充電樁建設(shè) XXX合同協(xié)議補充協(xié)議3篇
- 水污染課程設(shè)計消毒池
- 運輸樞紐規(guī)劃課程設(shè)計
- 二零二五年公轉(zhuǎn)私旅游度假借款合同模板3篇
- 企業(yè)應制訂的事故應急救援預案范例(2篇)
- 二零二五年度寫字樓租賃合同范本詳盡版
- 二零二五年度安居房施工項目施工進度調(diào)整合同2篇
- 2025年班委會競選演講稿范例(3篇)
- 電工工具報價單
- 教科版三年級上冊科學教案(全冊)
- 勞動力安排計劃及勞動力計劃表(樣板)
- 利潤表4(通用模板)
- 教育評價學全套ppt課件完整版教學教程
- 注塑領(lǐng)班作業(yè)指導書
- ASTM B330-20 Standard Test Methods for Estimating Average Particle Size of Metal Powders and Related Compounds Using%2
- 顧客忠誠度論文
- 血氣分析及臨床應用
- 浙江省市政工程安全臺賬完整
- 歐洲城市廣場歷史演變
評論
0/150
提交評論