![界面設計所有控件及示例_第1頁](http://file4.renrendoc.com/view/2b52a8d28777d02d468657d6a8a6d923/2b52a8d28777d02d468657d6a8a6d9231.gif)
![界面設計所有控件及示例_第2頁](http://file4.renrendoc.com/view/2b52a8d28777d02d468657d6a8a6d923/2b52a8d28777d02d468657d6a8a6d9232.gif)
![界面設計所有控件及示例_第3頁](http://file4.renrendoc.com/view/2b52a8d28777d02d468657d6a8a6d923/2b52a8d28777d02d468657d6a8a6d9233.gif)
![界面設計所有控件及示例_第4頁](http://file4.renrendoc.com/view/2b52a8d28777d02d468657d6a8a6d923/2b52a8d28777d02d468657d6a8a6d9234.gif)
![界面設計所有控件及示例_第5頁](http://file4.renrendoc.com/view/2b52a8d28777d02d468657d6a8a6d923/2b52a8d28777d02d468657d6a8a6d9235.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
演示文稿界面設計所有控件及示例當前1頁,總共132頁。(優(yōu)選)界面設計所有控件及示例當前2頁,總共132頁。概述用戶界面組件介紹布局管理事件處理菜單和表格主要內(nèi)容當前3頁,總共132頁。本章基本要求了解AWT和Swing熟悉4個頂層容器掌握JFrame熟悉常用的中間容器會對組件進行布局熟悉常用基本組件的創(chuàng)建和操作會設置組件的顏色和字體會處理組件上發(fā)生的事件會創(chuàng)建菜單和表格當前4頁,總共132頁。用戶界面的類型字符用戶界面(CUI):例如,MS-DOS圖形用戶界面(GUI):例如,MicrosoftWindowsGUI的組件基本的控制組件,例如:Button、Label等。容器:能容納和排列組件的組件組件用戶界面概述組件繼承它的父容器的性質(zhì)當前5頁,總共132頁。MenuListBoxCheckBoxRadioButtonButtonLabelFrameWindowTextBoxComboBox當前6頁,總共132頁。AWTAWT(AbstractWindowToolkit)是在Swing出現(xiàn)之前用來設計界面的工具包用awt包中的類創(chuàng)建的用戶界面在不同的操作平臺上有不同的表現(xiàn)。使用不靈活importjava.awt.*;SwingSwing是對AWT的擴展,它是Java2中的一個標準包組件都以J開頭,例如:JFrame、JButton等。swing界面在不同的平臺上外觀完全一樣,真正做到平臺獨立importjavax.swing.*;基本概述當前7頁,總共132頁。界面設計中常用組件類的體系結構java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.awt.Windowjava.applet.AppletJAppletjavax.swing.JComponentjava.awt.Dialogjava.awt.FrameJDialogJFrameJWindowSwing組件當前8頁,總共132頁。用戶界面當前9頁,總共132頁。一個頂層容器(即主窗口)頂層容器包含若干個中間容器每個中間容器包含若干個基本組件按照合理的布局方式將它們組織在一起基本組件可響應發(fā)生在其上的事件Java程序界面的構成當前10頁,總共132頁。容器容器是用來容納和管理一組界面元素的對象。基本組件必須被安排在某個容器中,否則就無法使用。JFrameContainerJWindowJPanelJDialogJApplet有邊框容器無邊框容器頂層容器當前11頁,總共132頁。頂層容器JFrame,JApplet,JDialog,JWindow作用:創(chuàng)建初始界面,為其他組件提供一個容器,以構建滿足用戶需求的操作界面JFrame用來創(chuàng)建application,最常用的JApplet用來創(chuàng)建appletJDialog用來創(chuàng)建對話框,常用JWindow不常用當前12頁,總共132頁。JPanel,JScrollPane,JSplitPane,JTabbedPane、JInternalFrame、Box這些容器提供將有關組件按照某種布局組合在一起,然后放入中間容器或頂層容器的功能JPanel提供一個面板JScrollPane是具有滾動條的窗格JSplitPane是具有拆分功能的窗格JTabbedPane是帶有若干標簽的分類窗格JInternalFrame用于創(chuàng)建內(nèi)嵌于JFrame中的內(nèi)部框架Box提供創(chuàng)建橫向/縱向盒子容器的功能中間容器當前13頁,總共132頁。JLabelJButton、JCheckBox、JRadioButtonJList、JComboBoxJTextField、JPasswordField、JTextAreaJToolBar、JToolTip、JProgressBarJSlider、JSpinnerJFileChooser、JColorChooserJMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem、JPopupMenuJTableJTreeJOptionPane、JSeparator基本組件當前14頁,總共132頁。類JFrame
是java.awt.Frame的子類在Swing的組件中,JFrame
并不全是由Java編寫的是一種與平臺關系比較密切的組件(Heavyweightcomponent)java.lang.Object|+--java.awt.Component|+--java.awt.Container|+--java.awt.Window|+--java.awt.Frame|+--javax.swing.JFrame創(chuàng)建用戶主窗口--JFrame當前15頁,總共132頁。構造方法JFrame()創(chuàng)建無標題窗口。JFrame(Strings)創(chuàng)建標題名字是字符串s的窗口。例如:JFramef=newJFrame(“Hello”);常用方法setTitle(Stringtitle)設置JFrame標題文本get/setSize():獲取/設置JFrame的大小。add(Objecta):將組件添加到JFrame中。dispose()關閉JFrame并回收用于創(chuàng)建窗口的任何資源。setVisible(booleanb)設置JFrame的可見性。setLocation(x,y)設置JFrame在屏幕的位置創(chuàng)建用戶主窗口--JFrame當前16頁,總共132頁。常用方法voidsetExtendedState(int);
//設置擴展的狀態(tài),取值:
NORMAL
ICONIFIED
MAXIMIZED_HORIZ
MAXIMIZED_VERT
MAXIMIZED_BOTH//最大化voidsetDefaultCloseOperation(int);
//設置默認的關閉時的操作,取值:
DO_NOTHING_ON_CLOSE
HIDE_ON_CLOSE
DISPOSE_ON_CLOSE
EXIT_ON_CLOSE//關閉創(chuàng)建用戶主窗口--JFrame當前17頁,總共132頁。importjavax.swing.*;publicclassFirstJFrame{publicstaticvoidmain(String[]args){JFramef=newJFrame();f.setTitle("MyFirstJFrame");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(300,300);f.setVisible(true);}}示例:直接使用JFrame創(chuàng)建當前18頁,總共132頁。importjavax.swing.*;publicclassSecondJFrameextendsJFrame{publicSecondJFrame(){super(“MySecondJFrame”);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setVisible(true);}publicstaticvoidmain(String[]args){SecondJFramef=newSecondJFrame();}}示例:擴展JFrame創(chuàng)建當前19頁,總共132頁。相關類圖標類:javax.swing.ImageIcon圖像類:java.awt.Image創(chuàng)建圖標和圖像對象ImageIconii=newImageIcon(“x.gif”);Imageimage=ii.getImage();設置
setIconImage(image);設置JFrame的圖標當前20頁,總共132頁。由JFrame創(chuàng)建初始的用戶界面由JPanel、JScrollPane、JTabbedPane、JSplitPane、JInternalFrame、Box等創(chuàng)建中間容器由基本組件類創(chuàng)建有關的組件將基本組件按照某種布局添加到中間容器中,根據(jù)需要可能會用到容器的嵌套將中間容器按照某種布局添加到頂層容器中,形成滿足用戶需求的操作界面界面的基本組織方式當前21頁,總共132頁。Containercon=getContentPane();JPanelpanel=newJPanel();JButtonbutt=newJButton("PressMe");panel.add(butt);con.add(panel);獲得JFrame的容器并添加組件當前22頁,總共132頁。學生基本信息錄入界面的設計設計一個用戶界面,用于輸入學生的下列信息:
姓名 JTextField 密碼 JPasswordField
性別 JRadioButton 黨否 JCheckBox
年齡 JSpinner 顏色JColorChooser
加分 JSlider 系別 JComboBox
選課 JList 確認 JButton
保存 JFileChooser 結果 JTextArea要求輸入完畢按“確認”將該學生的信息記錄到“結果”中;按“保存”將結果保存到一個指定的文件中;基本信息與結果界面上下分布在一個JSplitPane中;屏幕下方顯示當前時間示例:學生信息管理系統(tǒng)當前23頁,總共132頁。步驟一:由JFrame創(chuàng)建初始的用戶界面,獲得JFrame的容器,添加中間容器JPanel示例:學生信息管理系統(tǒng)JFramef=newJFrame();f.setTitle("學生信息管理系統(tǒng)");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setExtendedState(MAXIMIZED_BOTH);//f.setSize(800,600);//f.setLocation(200,200);Containercon=f.getContentPane();JPanelpan=newJPanel();con.add(pan);f.setVisible(true);當前24頁,總共132頁。基本組件當前25頁,總共132頁。標簽標簽(JLabel)是最簡單的組件,用于顯示單行靜態(tài)文本。用戶只能查看其內(nèi)容而不能對其進行修改。標簽類沒有事件響應。構造方法JLabellabel1=newJLabel(“姓名”);ImageIconii=newImageIcon(“java.gif”);
JLabellabel2=newJLabel(ii);JLabellabel3=newJLabel(“姓名”,ii,JLabel.CENTER);標簽內(nèi)容一般不需要改變,但也可以使用setText和setIcon方法進行改變例如當使用同一標簽顯示不同的圖片時,就可使用setIcon方法實現(xiàn)基本組件—標簽當前26頁,總共132頁。步驟二:添加標簽(要錄入的基本信息的名稱)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();JLabell_xm=newJLabel("姓名");pan.add(l_xm);JLabell_xb=newJLabel("性別");pan.add(l_xb);……con.add(pan);f.setVisible(true);當前27頁,總共132頁。按鈕是常用的功能組件,表示按鈕的類為JButton。構造方法JButtonbutton1=newJButton(“姓名”);ImageIconii=newImageIcon(“java.gif”);JButtonbutton2=newJButton(ii);JButtonbutton3=newJButton(“姓名”,ii);常用方法voidsetActionCommand(String);voidaddActionListener(ActionListener);基本組件—按鈕當前28頁,總共132頁。步驟二:添加按鈕(確認和保存按鈕)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();JPanelpan=newJPanel();JLabell_xml_xm=newJLabel("姓名");pan.add(l_xm);……JButtonb_sub=newJButton("確認");pan.add(b_sub);JButtonb_save=newJButton("保存");pan.add(b_save);con.add(pan);f.setVisible(true);當前29頁,總共132頁。構造方法JTextFieldtf1=newJTextField(10);JTextFieldtf2=newTextField(“aa”);JTextFieldtf3=newJTextField(“aa”,8);ComponentTextComponentJTextFieldJTextArea單行的文本框多行的文本區(qū)基本組件—文本框(JTextField)其它方法
publicStringgetText()publicStringgetSelectedText()publicvoidsetText(Strings)publicvoidsetEchoChar(charc)publicvoidsetEditable(booleanb)當前30頁,總共132頁。步驟二:添加文本框(錄入姓名信息)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();JPanelpan=newJPanel();JLabell_xm=newJLabel("姓名");pan.add(l_xm);JTextFieldtf_name=newJTextField(20);pan.add(tf_name);……con.add(pan);f.setVisible(true);當前31頁,總共132頁。構造方法
JTextAreata1=newJTextArea(5,5);JTextAreata2=newJTextArea(“ab”,8,7);ComponentTextComponentJTextFieldJTextArea單行的文本框多行的文本區(qū)基本組件—文本區(qū)(JTextArea)其它方法publicgetCaretPosition()publicvoidinsert(Stringstr,intpos)publicStringgetSelectedText()publicintgetSelectionStart()publicintgetSelectionEnd()publicvoidreplaceRange(Stringstr,intstart,intend)當前32頁,總共132頁。應用中經(jīng)常將文本區(qū)對象放入一個滾動窗格中,以使用滾動條功能,方法如下:JTextAreata=newJTextArea(10,10);JScrollPanesp=newJScrollPane(ta);基本組件—文本區(qū)(JTextArea)當前33頁,總共132頁。步驟二:添加文本域(顯示錄入結果信息)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……Jlabell_jg=newJLabel("錄入結果");JTextArearesult=newJTextArea(10,30);JScrollPanesp=newJScrollPane(result);pan.add(sp);pan.add(l_jg);……con.add(pan);f.setVisible(true);當前34頁,總共132頁?;窘M件—單選按鈕(JRadioButton)構造方法(與JButton類似)JRadioButtonrbutt1=newJRadioButton(“男”,true);ImageIconii=newImageIcon(“java.gif”);
JRadioButtonrbutt2=newJRadioButton(ii);JRadioButtonrbutt3=newJRadioButton(“女”,ii,false);常用方法voidaddActionListener(ActionListener);voidaddItemListener(ItemListener);booleanisSelected();voidsetSelected(boolean);當前35頁,總共132頁。使用單選按鈕時經(jīng)常用到ButtonGroup類,如下創(chuàng)建按鈕組對象
ButtonGroupbg=newButtonGroup();創(chuàng)建若干單選按鈕對象
JRadioButtonb1=newJRadioButton(“x”);
JRadioButtonb2=newJRadioButton(“y”);將各單選按鈕添加到按鈕組中
bg.add(b1);
bg.add(b2);將單選按鈕添加到其他容器中
容器對象.add(b1);
容器對象.add(b2);注:按鈕組維持只有一個單選按鈕處于選擇狀態(tài)基本組件—單選按鈕(JRadioButton)當前36頁,總共132頁。步驟二:添加單選按鈕(選擇性別)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JRadioButtonmale=newJRadioButton("男",true);JRadioButtonfemale=newJRadioButton("女");ButtonGroupgroup=newButtonGroup();group.add(male);group.add(female);pan.add(male);pan.add(female);……con.add(pan);f.setVisible(true);當前37頁,總共132頁。構造方法JCheckbox()創(chuàng)建一個沒有標簽的復選框。JCheckbox(Iconicon)創(chuàng)建一個有圖標的復選框。JCheckbox(Iconicon,booleansele)創(chuàng)建一個有圖標icon的復選框,初始狀態(tài)為selsJCheckbox(Strings)創(chuàng)建一個有標簽的復選框。JCheckbox(Strings,booleanb)創(chuàng)建一個有標簽的復選框,參數(shù)b設置初始狀態(tài)JCheckbox(Stringstr,Iconicon)創(chuàng)建一個有str文字及圖標icon的復選框JCheckbox(Stringstr,Iconicon,booleansele)創(chuàng)建一個有str文字及圖標icon的復選框,初始狀態(tài)為sels基本組件—復選框(JCheckbox)當前38頁,總共132頁。常用方法isSelected():返回復選按鈕的狀態(tài),返回類型是boolean。如果返回true,則表示該按鈕處于選中狀態(tài);否則處于未選中狀態(tài)。setSelected(Booleanstate):設置復選按鈕的狀態(tài)?;窘M件—復選框(JCheckbox)當前39頁,總共132頁。步驟二:添加復選框(選擇愛好,多項選擇)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……Jlabell_ah=newJLabel("愛好");JCheckBox[]hobby={newJCheckBox("音樂"),newJCheckBox("足球"),newJCheckBox("繪畫")};pan.add(l_ah);pan.add(hobby[0]);pan.add(hobby[1]);pan.add(hobby[2]);……con.add(pan);f.setVisible(true);當前40頁,總共132頁。構造方法Stringss[]={“red”,”green”,”blue”};
JListlist1=newJList(ss);JListlist2=newJList(Vector);其它常用方法
voidaddListSelectionListener(…);voidsetVisibleRowCount(int);voidsetSelectionMode(int);
//取值如下(在ListSelectionModel中定義)
SINGLE_SELECTION
SINGLE_INTERVAL_SELECTION
MULTIPLE_INTERVAL_SELECTION(默認)intgetSelectedIndex();int[]getSelectedIndices();ObjectgetSelectedValue();Object[]getSelectedValues();基本組件—列表框(JList)當前41頁,總共132頁。步驟二:添加列表框(選擇選修課程)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_xk=newJLabel("選課");String[]coursesNames={"數(shù)據(jù)結構“,"操作系統(tǒng)“,"網(wǎng)絡原理","Java程序設計“,"分布式系統(tǒng)開發(fā)技術","計算機導論“,"密碼學","計算機組成原理“,"編譯原理","圖形學”};course=newJList(coursesNames);pan.add(l_xk);pan.add(course);……con.add(pan);f.setVisible(true);當前42頁,總共132頁。構造方法Stringss[]={“red”,”green”,”blue”};
JComboBoxcb1=newJComboBox(ss);JComboBoxcb2=newJComboBox(Vector);常用方法addItem()添加一個項目到JComboBox.get/setSelectedIndex()獲取/設置JComboBox中選中項目的索引get/setSelectedItem()獲取/設置選中的對象。removeAllItems()從JComboBox刪除所有對象。removeItem()從JComboBox刪除特定對象。setEditable把一個組合框設置為可編輯的。注意編輯只會影響當前項,它不會改變列表的內(nèi)容?;窘M件—下拉列表(JComboBox)當前43頁,總共132頁。步驟二:添加下拉列表(選擇院系)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_yx=newJLabel("院系");pan.add(l_yx);String[]departmentNames={"計算機科學與技術系","電子信息與技術系","計算機工程系”};JComboBoxdepartment=newJComboBox(departmentNames);department.setEditable(false);pan.add(department);
……con.add(pan);f.setVisible(true);當前44頁,總共132頁。構造方法(類似于JTextField)常用方法voidaddActionListener(ActionListener);char[]getPassword();voidsetEchoChar(char);chargetEchoChar();基本組件—密碼域(JPasswordField)當前45頁,總共132頁。步驟二:添加密碼(密碼輸入顯示“*”)示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_ma=newJLabel("密碼");pan.add(l_ma);password=newJPasswordField(20);password.setEchoChar('*');pan.add(password);
……con.add(pan);f.setVisible(true);當前46頁,總共132頁。構造方法JSliderslider=new
JSlider(JSlider.HORIZONTAL,0,100,10);常用方法voidaddChangeListener(ChangeListener);voidsetValue(int);intgetValue();voidsetMajorTickSpacing(int);voidsetMinorTickSpacing(int);voidsetPaintTicks(boolean);//falsevoidsetPaintLabels(boolean);//falsevoidsetPaintTrack(boolean);//truevoidsetSnapToTicks(boolean);//false基本組件—滑動條(JSlider)當前47頁,總共132頁。步驟二:添加加分選項(加分的選項采用滑動條實現(xiàn))示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_jf=newJLabel("加分");pan.add(l_jf);addition=newJSlider(JSlider.HORIZONTAL,0,100,50);addition.setMajorTickSpacing(10);addition.setMinorTickSpacing(5);addition.setPaintTicks(true);addition.setPaintLabels(true);addition.setSnapToTicks(true);pan.add(addition);……con.add(pan);f.setVisible(true);當前48頁,總共132頁。構造方法
JProgressBar(int,int,int);JProgressBarpb=newJProgressBar(JProgressBar. HORIZONTAL,0,100);常用方法voidaddChangeListener(ChangeListener);voidsetValue(int);//設置當前值voidsetString(String);
//設置顯示的字符串voidsetStringPainted(boolean);
//設置是否顯示字符串,默認為falsevoidsetBorderPainted(boolean);
//設置是否顯示邊框,默認為true基本組件—進度條(JProgressBar)當前49頁,總共132頁。步驟二:添加進度條示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JProgressBarprogbar=newJProgressBar(JProgressBar.HORIZONTAL,0,100);progbar.setStringPainted(true);……con.add(pan);f.setVisible(true);當前50頁,總共132頁。構造方法JFileChooserfc1,fc2;//聲明兩個對象變量fc1=newJFileChooser();//使用系統(tǒng)默認目錄fc2=newJFileChooser(“d:\\java”);顯示方法intshowOpenDialog(Component);intshowSaveDialog(Component);
//分別用于顯示標準的打開和保存對話框
//參數(shù)Component指定對話框依附的父組件
//返回值:APPROVE_OPTION 選擇了確認
CANCEL_OPTION 選擇了取消
ERROR_OPTION 出現(xiàn)了錯誤基本組件—文件選擇器(JFileChooser)當前51頁,總共132頁。其他常用方法voidsetCurrentDirectory(File);voidsetMultiSelectionEnabled(boolean);FilegetSelectedFile();File[]getSelectedFiles();FilegetCurrentDirectory();StringgetName(File);
//取得文件/目錄名稱,不含路徑,可用File類的getAbsolutePath()方法獲取完整路徑voidsetFileSelectionMode(int);
//FILES_ONLY只能選擇文件(默認)
DIRECTORIES_ONLY只能選擇目錄
FILES_AND_DIRECTORIES文件和目錄都可選voidsetFileFilter(FileFilter);當前52頁,總共132頁。顯示方法使用JColorChooser提供的類方法showDialogstaticColorshowDialog(
Component,//父組件
String,//標題
Color//初始顏色值
);
//返回值:新選擇的顏色值Color示例
Colorc=JColorChooser.showDialog
(this,”請選擇顏色”,Color.red); //得到顏色對象c后,即可在需要的地方使用基本組件—顏色選擇器(JColorChooser)當前53頁,總共132頁。Confirm對話框intshowConfirmDialog(Component,Object);
//顯示含有Yes、No、Cancel按鈕的確認框
//參數(shù):父組件,顯示信息
//返回值:
YES_OPTION 是
NO_OPTION 否
CANCEL_OPTION 撤銷
OK_OPTION 確定
CLOSED_OPTION 關閉還有其他形式的類方法,請參閱幫助文檔基本組件—對話框(
JOptionPane)當前54頁,總共132頁。Input對話框StringshowInputDialog(Component,Object);
//參數(shù):父組件,顯示信息
//返回值:
·選擇確認后返回輸入的字符串
·選擇取消或關閉后返回null還有其他形式的類方法,請參閱幫助文檔基本組件—對話框(
JOptionPane)當前55頁,總共132頁。Message對話框voidshowMessageDialog(Component,Object);
//參數(shù):父組件,顯示信息
//沒有返回值,只是用來顯示一些信息還有其他形式的類方法,請參閱幫助文檔基本組件—對話框(
JOptionPane)當前56頁,總共132頁。Option對話框intshowOptionDialog(
Component,//父組件
Object,//顯示信息
String,//標題
int,//標準選項按鈕組類型
int,//標準信息圖標類型
Icon,//自定義信息圖標
Object[],//自定義選項按鈕組
Object//自定義默認的選項按鈕
);
//該方法提供了豐富且復雜的表達形式,請參閱幫助文檔注:使用這些標準對話框,可以方便實現(xiàn)某些功能基本組件—對話框(
JOptionPane)當前57頁,總共132頁。微調(diào)器(JSpinner)
構造方法JSpinnerspinner=newJSpinner();常用方法voidaddChangeListener(ChangeListener);voidsetValue(Object);ObjectgetValue();ObjectgetNextValue();ObjectgetPreviousValue();當前58頁,總共132頁。示例:學生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabellb=newJLabel("年齡");JSpinnerjsp=newJSpinner();jsp.setValue(newInteger(20));pan.add(lb);pan.add(jsp);……con.add(pan);f.setVisible(true);步驟二:添加年齡微調(diào)器當前59頁,總共132頁。計時器(Timer)
構造方法Timer(int,ActionListener);
Timertimer=newTimer(1000,this);常用方法voidstart();voidstop();voidrestart();voidsetDelay(int);voidsetRepeats(boolean);booleanisRunning();當前60頁,總共132頁。創(chuàng)建邊框(使用BorderFactory類的類方法)Borderborder1=//創(chuàng)建一個具有指定顏色和寬度的線邊框BorderFactory.createLineBorder(Color,int);Borderborder2=
BorderFactory.createTitledBorder(String);
創(chuàng)建一個新標題邊框,采用默認設置,并指定了標題文本。Borderborder3=BorderFactory.createLoweredBevelBorder();
創(chuàng)建一個具有凹入斜面邊緣的邊框Borderborder4=
BorderFactory.createRaisedBevelBorder();創(chuàng)建一個具有凸出斜面邊緣的邊框Borderborder5=
BorderFactory.createEtchedBevelBorder();創(chuàng)建一個具有“浮雕化”外觀效果的邊框,將組件的當前背景色用于突出顯示和陰影顯示使用setBorder(border)方法設置組件的邊框組件的邊框設置邊框(Border)當前61頁,總共132頁。分隔線(JSeparator)構造方法JSeparatorseparator1=
newJSeparator();//默認水平JSeparatorseparator2=
newJSeparator(JSeparator.HORIZONTAL);JSeparatorseparator3=
newJSeparator(JSeparator.VERTICAL);使用add(JSeparator)方法加到合適的地方組件的分隔線設置當前62頁,總共132頁。設置顏色默認情況下,Java使用RGB顏色描述系統(tǒng)RGB指紅/綠/藍三基色,取值范圍是[0,255],一種顏色就是這三種基本顏色的組合描述顏色的類是java.awt.Color顏色對象的創(chuàng)建Colorc=newColor(0,255,0);直接使用Color類中定義的標準顏色常量
如Color.BLACK
或Color.black
等 Colorc1=Color.BLACK;//Color.blackC)顏色選擇器JColorChooser直觀得到一個Color對象Colorc3=JColorChooser.showDialog(
Component,String,Color);組件的顏色設置當前63頁,總共132頁。有了Color對象后,可使用
setForeground(Color);
setBackground(Color);
設置組件的前景色和背景色組件的顏色設置當前64頁,總共132頁。字體類:java.awt.Font字體對象的創(chuàng)建Font(Stringname,intstyle,intsize);
//名稱,如“隸書”
//風格,取值有PLAIN,BOLD,ITALIC
//大小,如24,60Fontf=newFont(“宋體”,Font.BOLD,24);設置組件的字體setFont(Font);組件的字體設置當前65頁,總共132頁。光標類:java.awt.Cursor光標對象的獲取Cursor.getPredefinedCursor(int);
//如:DEFAULT_CURSOR、HAND_CURSOR、WAIT_CURSOR、TEXT_CORSOR、CROSSHAIR_CURSOR設置組件的光標setCursor(Cursor.HAND_CURSOR);組件的光標設置當前66頁,總共132頁。JPanel創(chuàng)建對象
JPanelp=newJPanel();默認布局為FlowLayout,可以改變,如
p.setLayout(newGridLayout(2,3));添加組件
p.add(組件對象1);
p.add(組件對象2);
……中間容器的使用當前67頁,總共132頁。JScrollPaneJTextAreata=newJTextArea(50,50);JScrollPanesp=newJScrollPane(ta);JSplitPaneJTextAreata=newJTextArea(50,50);JPanelp=newJPanel();JSplitPanesp=newJSplitPane(JSplitPane. HORIZONTAL_SPLIT,ta,p);//另一種方式JSplitPanesp=new
JSplitPane(JSplitPane.VERTICAL_SPLIT,true,ta,p);中間容器的使用當前68頁,總共132頁。JTabbedPaneJTabbedPanetp=newJTabbedPane();tp.setTabPlacement(int);tp.addChangeListener(ChangeListener);JPanelp1=newJPanel();JPanelp2=newJPanel();tp.addTab(“p1”,p1);tp.addTab(“p2”,p2);tp.removeTabAt(0);intn=tp.getTabCount();中間容器的使用當前69頁,總共132頁。JInternalFrame示例:ExampleCh07_Jframe.java中classJInternalFrame_test中間容器的使用當前70頁,總共132頁。Java用戶圖形界面設計步驟根據(jù)需要往界面中添加組件通過布局管理器對容器中的組件進行組織排列如何相應用戶對組件的操作,即事件處理小結當前71頁,總共132頁。布局管理當前72頁,總共132頁。布局是指組件在容器中的排列方式,主要有:FlowLayout 流式布局BorderLayout 邊界布局GridLayout 網(wǎng)格布局CardLayout 卡片布局BoxLayout 盒式布局GridBagLayout 網(wǎng)格包布局null 空布局(不使用布局)注:對于一些復雜的情況,往往需要使用容器的嵌套,各容器可使用不同的布局。當容器的尺寸改變時,布局管理器會自動調(diào)整組件的排列布局的概念當前73頁,總共132頁。該布局以行為單位依次排列各組件,一行排不下時,另起一行JPanel的默認布局是FlowLayout構造方法FlowLayout();FlowLayout(intalign);
//align一般取值有:CENTER、LEFT、RIGHTFlowLayout(intalign,inthgap,intvgap);
//hgap和vgap指定組件與容器起始邊界以及組件間的水平和垂直間距,默認值為5個像素例如:FlowLayoutlayout=new
FlowLayout(FlowLayout.LEFT,10,10);FlowLayout當前74頁,總共132頁。創(chuàng)建FlowLayout布局對象
FlowLayoutl=newFlowLayout();創(chuàng)建容器對象
JPanelpanel=newJPanel();設置容器對象的布局或使用默認布局
panel.setLayout(l);向容器中添加組件對象(設組件對象已創(chuàng)建)
panel.add(組件對象);FlowLayout布局的使用當前75頁,總共132頁。例如,setLayout(newFlowLayout(FlowLayout.LEFT,10,20));缺點:當用戶對由FlowLayout布局管理的區(qū)域進行縮放時,布局發(fā)生變化。該布局適用于組件個數(shù)較少的情況。FlowLayout布局的使用當前76頁,總共132頁。按照東、西、南、北、中5個方位排列各組件頂層容器JFrame、JApplet、JDialog、JWindow的默認布局都是BorderLayoutBorderLayout當前77頁,總共132頁。構造方法BorderLayout();BorderLayout(inthgap,intvgap);
//hgap和vgap指定組件間的水平和垂直間距,默認值為0個像素例如:BorderLayoutlay1=newBorderLayout(); BorderLayoutlay2=newBorderLayout(10,10);BorderLayout當前78頁,總共132頁。創(chuàng)建BorderLayout布局對象
BorderLayoutl=newBorderLayout();創(chuàng)建容器對象
JPanelpanel=newJPanel();設置容器對象的布局或使用默認布局
panel.setLayout(l);向容器中添加組件對象(設組件對象已創(chuàng)建)
panel.add(組件對象,方位);
//方位的取值為:
BorderLayout.EAST或“East”
BorderLayout.WEST或“West”
BorderLayout.SOUTH或“South”
BorderLayout.NORTH或“North”
BorderLayout.CENTER或“Center”(默認)BorderLayout布局的使用當前79頁,總共132頁。缺點:當加入的組件超過5個時,就必須使用容器的嵌套或其它布局。優(yōu)點:當容器縮放時,組件相應的位置不變化,但大小改變。示例:
邊界布局示例BorderLayout布局的使用當前80頁,總共132頁。按照二維網(wǎng)格以相同大小依次排列各組件構造方法GridLayout();//一行、每個組件一列GridLayout(introws,intcols);//行列數(shù)GridLayout(rows,cols,inthgap,intvgap);
//行行、列列的間距,默認值為0個像素例如:GridLayoutlay1=newGridLayout(3,3);GridLayoutlay2=newGridLayout(5,2,10,10);GridLayout當前81頁,總共132頁。創(chuàng)建GridLayout布局對象
GridLayoutl=newGridLayout(2,2);創(chuàng)建容器對象
JPanelpanel=newJPanel();設置容器對象的布局或使用默認布局
panel.setLayout(l);向容器中添加組件對象(設組件對象已創(chuàng)建)
panel.add(組件對象);布局的使用當前82頁,總共132頁。該布局適用于組件個數(shù)較多的情況。優(yōu)點:組件的相應位置不隨區(qū)域的縮放而改變,只是組件的大小改變。GridLayout當前83頁,總共132頁。從網(wǎng)格出發(fā)來布局組件,但一個組件在橫向和縱向上都可以占據(jù)多個網(wǎng)格,靈活但比較復雜使用GridBagConstraints指定組件在布局時的有關約束值GridBagLayout當前84頁,總共132頁。屬性(11個)gridx,gridy–位置gridwidth,gridheight–占據(jù)網(wǎng)格數(shù)anchor–方位fill–充滿方式javax.awt.GridBagConstraints.HORIZONTALjavax.awt.GridBagConstraints.VERTICALjavax.awt.GridBagConstraints.BOTH創(chuàng)建對象GridBagConstraintsgbc1,gbc2;gbc1=newGridBagConstraints();gbc2=newGridBagConstraints(…);GridBagConstraints當前85頁,總共132頁。GridBagLayoutgbl=newGridBagLayout();JPanelpanel=newJPanel();panel.setLayout(gbl);GridBagConstraintsgbc=newGridBagConstraints();
……//設置JButtonbutton=newJButton("Button");panel.add(button,gbc);布局的使用當前86頁,總共132頁。畫出組件布局草圖確定每個組件應占據(jù)的網(wǎng)格分別在x和y方向上為網(wǎng)格標上序號組件的gridx,gridy,gridwidth,gridheight據(jù)填充和對齊要求設置fill和anchor值須保持默認大小的組件的weightx和weighty值設為0,其余的設為100看是否需要設置填塞值insets和ipadx、ipady編寫代碼運行程序,觀察結果,必要時進行修改一般布局步驟當前87頁,總共132頁。該布局以一疊卡片的形式依次排列各組件構造方法CardLayout();CardLayout(inthgap,intvgap);
//組件與容器邊界間距,默認值為0個像素例如:
CardLayoutlayout1=newCardLayout();CardLayoutlayout2=newCardLayout(10,10);CardLayout當前88頁,總共132頁。創(chuàng)建CardLayout布局對象
CardLayoutl=newCardLayout();創(chuàng)建容器對象
JPanelpanel=newJPanel();設置容器對象的布局或使用默認布局
panel.setLayout(l);向容器中添加組件對象(設組件對象已創(chuàng)建)
panel.add(組件對象,“名稱”);顯示組件l.show(panel,“名稱”);l.first(panel);l.last(panel);l.next(panel);l.previous(panel);布局的使用當前89頁,總共132頁。以一行或一列的方式依次排列各組件容器Box的默認布局為且只能為BoxLayout在實際應用中,常使用Box的有關方法實現(xiàn)布局javax.swing.Box類的使用創(chuàng)建Box對象
Boxb1=Box.createHorizontalBox();
創(chuàng)建一個從左到右顯示其組件的Box
Boxb2=Box.createVerticalBox();
創(chuàng)建一個從上到下顯示其組件的Box向盒子中添加組件對象(設組件對象已創(chuàng)建)
b1.add(組件對象);BoxLayout當前90頁,總共132頁。添加Glue:Glue用來對組件進行擠壓,產(chǎn)生左對齊、右對齊或兩端對齊的效果b1.add(Box.createHorizontalGlue());b2.add(Box.createVerticalGlue());添加Strut:Strut用來加入組件間的間距b1.add(Box.createHorizontalStrut(5));b2.add(Box.createVerticalStrut(5));添加RigidArea:RigidArea用來設置組件的間距和高度(寬度和間距)Dimensiond=newDimension(50,80);b1.add(Box.createRigidArea(d));b2.add(Box.createRigidArea(d));向盒子中添加必要的透明組件當前91頁,總共132頁。不使用任何布局管理器,一般不使用該方式空布局的使用創(chuàng)建容器對象
JPanelpanel=newJPanel();設置容器對象的布局為null
panel.setLayout(null);設置組件在容器中的位置
組件對象.setBounds(x,y,width,height);向容器中添加組件對象(設組件對象已創(chuàng)建)
panel.add(組件對象);NULL當前92頁,總共132頁。如實現(xiàn)以下界面,可以采用哪些布局管理方式:布局管理器的選擇當前93頁,總共132頁。事件處理當前94頁,總共132頁。事件處理機制事件:Java語言將每一個鍵盤或鼠標的操作定義為一個“事件”。clickme!當用戶點擊了一個按鈕,意味著一個按鈕事件的發(fā)生。事件響應:當事件發(fā)生時程序應該作出何種響應。事件處理方法對該事件進行響應事件處理概述當前95頁,總共132頁。事件處理的模型事件源:產(chǎn)生事件的組件叫事件源。事件對象:描述系統(tǒng)中發(fā)生了什么的對象事件監(jiān)聽器:對事件進行處理的類。事件對象事件監(jiān)聽器事件源事件處理概述當前96頁,總共132頁。
Java有20多個預定義的事件類,它們包含了所有組件上可能發(fā)生的事件。每一個事件都有一個相應的事件接口,事件接口中的事件處理方法完成對事件的處理。事件處理概述java.util.EventObjectjava.awt.AWTEventComponentEventAdjustmentEventItemEventActionEventTextEventFocusEventContainerEventInputEventPaintEventWindowEventKeyEventMouseEvent當前97頁,總共132頁。事件源事件對象事件監(jiān)聽器事件處理回顧創(chuàng)建一個實現(xiàn)了某個監(jiān)聽器接口的類當前98頁,總共132頁。常見的事件及其監(jiān)聽器一覽表事件名稱監(jiān)聽器主要用途W(wǎng)indowEventWindowListener窗口發(fā)生變化,如關閉ActionEventActionListener產(chǎn)生動作,如單擊按鈕ItemEventItemListener項目變化,如復選框ListSelectionEventListSelectionListener選擇列表中的項目時ChangeEventChangeListener狀態(tài)改變,如進度條FocusEventFocusListener焦點獲得或失去MouseEventMouseListener鼠標點擊、進入或離開MouseEventMouseMotionListener鼠標拖動或移動KeyEventKeyListener按鍵產(chǎn)生時MenuEventMenuListener菜單選擇時當前99頁,總共132頁。創(chuàng)建將要產(chǎn)生事件的組件對象構造實現(xiàn)相應事件監(jiān)聽器接口的類,并創(chuàng)建事件監(jiān)聽器對象為組件對象增加事件監(jiān)聽器對象:
組件對象.addXxxListener(事件監(jiān)聽器對象);
如:button.addActionListener(this);注:接口中的方法都含有所產(chǎn)生的事件對象參數(shù),使用該參數(shù)的getSource()方法可以得到產(chǎn)生該事件的事件源例如:publicvoidactionPerformed(ActionEventevt);事件處理一般方法當前100頁,總共132頁。ActionEvent與ActionListener當單擊按鈕、在文本域中回車、選擇組合框中的項目、選擇菜單項時產(chǎn)生該事件ActionListener接口中的方法 voidactionPerformed(ActionEvent);該事件在實際應用中經(jīng)常被處理ActionEvent中的常用方法
StringgetActionCommand();
//獲得與該動作相聯(lián)系的組件的命令字符串名稱,組件對象可使用
setActionCommand(String)方法進行設置,默認的命令字符串名稱是組件的標簽名稱//使用該方法可實現(xiàn)不同組件共用同一段處理代碼事件處理當前101頁,總共132頁。
publicclassMyActionListenerextendsJFrameimplementsActionListener{privateJButtonbutton; publicMyActionListener() { button=newJButton(“開始”);
button.addActionListener(this); }
publicvoidactionPerformed(ActionEventevt) {if(evt.getSource()==button) {//(evt.getActionCommand().equals(“開始”)) System.out.println(“Start…”); } }}事件處理示例當前102頁,總共132頁。示例在文本框中輸入英文單詞并回車,在另外一個文本框中立刻顯示漢語意思(TextFieldAction.java)當前103頁,總共132頁。1、創(chuàng)建一個主窗口,顯示一個按鈕,當點擊該按鈕時,在標題欄中顯示當前的時間(DispTime.java)JFrameJButtonTimerActionListenerDateSimpleDateFormat2、點擊按鈕,在文本框中顯示點擊次數(shù)。 ActionTest.java示例當前104頁,總共132頁。ItemEvent與ItemListener當單選按鈕、復選按鈕、下拉列表框中的項目狀態(tài)發(fā)生變化時產(chǎn)生該事件ItemListener接口中的方法
voiditemStateChanged(ActionEvent);ItemEvent中的常用方法ObjectgetItem();
//返回受該事件影響的項目對象,據(jù)需要可將Object轉(zhuǎn)換為相應的類型intgetStateChange();
//返回項目狀態(tài)發(fā)生變化的類型,取值:
ItemEvent.SELECTED
ItemEvent.DESELECTED事件處理當前105頁,總共132頁。單選按鈕、復選按鈕、下拉列表框觸發(fā)事件ItemEventTest.java示例當前106頁,總共132頁。WindowEvent與WindowListenerWindowListener接口中的方法voidwindowActivated(WindowEvent);//處理窗口被設置為當前活動窗口時觸發(fā)的事件voidwindowDeactivated(WindowEvent);//處理窗口被設置為非活動窗口時觸發(fā)的事件voidwindowIconified(WindowEvent);//處理窗口最小化時觸發(fā)的事件voidwindowDeiconified(WindowEvent);//處理窗口從最小化變?yōu)檎4笮r觸發(fā)的事件voidwindowOpened(WindowEvent);//處理窗口第一次顯示時觸發(fā)的事件voidwindowClosing(WindowEvent);//處理用戶試圖關閉窗口時觸發(fā)的事件voidwindowClosed(WindowEvent);//處理窗口被關閉時觸發(fā)的事件事件處理當前107頁,總共132頁。WindowAdapter適配器
WindowListener接口中含有較多的方法,實現(xiàn)時比較麻煩。為此,Java提供了適配器類WindowAdapter,該類實現(xiàn)了WindowListener接口,可用該類或其子類創(chuàng)建監(jiān)聽器注:凡含兩個以上方法的監(jiān)聽器都有對應的適配器適配器類實現(xiàn)一個對應的接口,只是方法為空。publicabstractclass
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度辦公室文件櫥柜安裝與節(jié)能環(huán)保技術合同
- 圖書采購合同的變更與解除范文
- 駕校車輛承包合同
- 綠化苗木采購合同
- 培訓業(yè)務承包合同
- 半導體材料供應與采購合同
- 杉木銷售合同
- 垃圾處理廠建設工程承包合同
- 購銷合同之買賣合同
- 2025年度高科技產(chǎn)品研發(fā)合作合同中的知識產(chǎn)權保護條款
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
- 仁愛英語八年級閱讀理解測試題和答案
- 山東省中考物理總復習 八上 第4講 光現(xiàn)象
- DB11∕T 1875-2021 市政工程施工安全操作規(guī)程
- 心肺康復完整版本課件
- 傳統(tǒng)節(jié)日春節(jié)英文介紹課件
- 質(zhì)量獎現(xiàn)場評審問題集錦精編版
- 裝配式結構技術課程教學大綱
- 水資源論證報告
- 中藥提取車間生產(chǎn)設備風險評估報告講解
- 實現(xiàn)結構化:初中語文大單元教學設計的核心
評論
0/150
提交評論