版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaSwing界面設(shè)計(jì)(所有控件及示例)JavaSwing界面設(shè)計(jì)(所有控件及示例)JavaSwing界面設(shè)計(jì)(所有控件及示例)概述用戶界面組件介紹布局管理事件處理菜單和表格主要內(nèi)容2JavaSwing界面設(shè)計(jì)(所有控件及示例)JavaSwin1概述用戶界面組件介紹布局管理事件處理菜單和表格主要內(nèi)容2概述主要內(nèi)容2本章基本要求了解AWT和Swing熟悉4個(gè)頂層容器掌握J(rèn)Frame熟悉常用的中間容器會(huì)對(duì)組件進(jìn)行布局熟悉常用基本組件的創(chuàng)建和操作會(huì)設(shè)置組件的顏色和字體會(huì)處理組件上發(fā)生的事件會(huì)創(chuàng)建菜單和表格3本章基本要求了解AWT和Swing3用戶界面的類型字符用戶界面(CUI):例如,MS-DOS圖形用戶界面(GUI):例如,MicrosoftWindowsGUI的組件基本的控制組件,例如:Button、Label等。容器:能容納和排列組件的組件組件用戶界面概述組件繼承它的父容器的性質(zhì)4用戶界面的類型基本的控制組件,例如:Button、LabelMenuListBoxCheckBoxRadioButtonButtonLabelFrameWindowTextBoxComboBox5MenuListBoxCheckBoxRadioButAWTAWT(AbstractWindowToolkit)是在Swing出現(xiàn)之前用來設(shè)計(jì)界面的工具包用awt包中的類創(chuàng)建的用戶界面在不同的操作平臺(tái)上有不同的表現(xiàn)。使用不靈活importjava.awt.*;SwingSwing是對(duì)AWT的擴(kuò)展,它是Java2中的一個(gè)標(biāo)準(zhǔn)包組件都以J開頭,例如:JFrame、JButton等。swing界面在不同的平臺(tái)上外觀完全一樣,真正做到平臺(tái)獨(dú)立importjavax.swing.*;基本概述6AWT基本概述6界面設(shè)計(jì)中常用組件類的體系結(jié)構(gòu)java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.awt.Windowjava.applet.AppletJAppletjavax.swing.JComponentjava.awt.Dialogjava.awt.FrameJDialogJFrameJWindowSwing組件7界面設(shè)計(jì)中常用組件類的體系結(jié)構(gòu)java.lang.Objec用戶界面8用戶界面8一個(gè)頂層容器(即主窗口)頂層容器包含若干個(gè)中間容器每個(gè)中間容器包含若干個(gè)基本組件按照合理的布局方式將它們組織在一起基本組件可響應(yīng)發(fā)生在其上的事件Java程序界面的構(gòu)成9一個(gè)頂層容器(即主窗口)Java程序界面的構(gòu)成9容器容器是用來容納和管理一組界面元素的對(duì)象?;窘M件必須被安排在某個(gè)容器中,否則就無法使用。JFrameContainerJWindowJPanelJDialogJApplet有邊框容器無邊框容器頂層容器10容器JFrameContainerJWindowJPanel頂層容器JFrame,JApplet,JDialog,JWindow作用:創(chuàng)建初始界面,為其他組件提供一個(gè)容器,以構(gòu)建滿足用戶需求的操作界面JFrame用來創(chuàng)建application,最常用的JApplet用來創(chuàng)建appletJDialog用來創(chuàng)建對(duì)話框,常用JWindow不常用11頂層容器JFrame,JApplet,JDialogJPanel,JScrollPane,JSplitPane,JTabbedPane、JInternalFrame、Box這些容器提供將有關(guān)組件按照某種布局組合在一起,然后放入中間容器或頂層容器的功能JPanel提供一個(gè)面板JScrollPane是具有滾動(dòng)條的窗格JSplitPane是具有拆分功能的窗格JTabbedPane是帶有若干標(biāo)簽的分類窗格JInternalFrame用于創(chuàng)建內(nèi)嵌于JFrame中的內(nèi)部框架Box提供創(chuàng)建橫向/縱向盒子容器的功能中間容器12JPanel,JScrollPane,JSplitPJLabelJButton、JCheckBox、JRadioButtonJList、JComboBoxJTextField、JPasswordField、JTextAreaJToolBar、JToolTip、JProgressBarJSlider、JSpinnerJFileChooser、JColorChooserJMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem、JPopupMenuJTableJTreeJOptionPane、JSeparator基本組件13JLabel基本組件13類JFrame是java.awt.Frame的子類在Swing的組件中,JFrame并不全是由Java編寫的是一種與平臺(tái)關(guān)系比較密切的組件(Heavyweightcomponent)java.lang.Object|+--java.awt.Component|+--java.awt.Container|+--java.awt.Window|+--java.awt.Frame|+--javax.swing.JFrame創(chuàng)建用戶主窗口--JFrame14類JFrame是java.awt.Frame的子類創(chuàng)建用構(gòu)造方法JFrame()創(chuàng)建無標(biāo)題窗口。JFrame(Strings)創(chuàng)建標(biāo)題名字是字符串s的窗口。例如:JFramef=newJFrame(“Hello”);常用方法setTitle(Stringtitle)設(shè)置JFrame標(biāo)題文本get/setSize():獲取/設(shè)置JFrame的大小。add(Objecta):將組件添加到JFrame中。dispose()關(guān)閉JFrame并回收用于創(chuàng)建窗口的任何資源。setVisible(booleanb)設(shè)置JFrame的可見性。setLocation(x,y)設(shè)置JFrame在屏幕的位置創(chuàng)建用戶主窗口--JFrame15構(gòu)造方法創(chuàng)建用戶主窗口--JFrame15常用方法voidsetExtendedState(int);
//設(shè)置擴(kuò)展的狀態(tài),取值:
NORMAL
ICONIFIED
MAXIMIZED_HORIZ
MAXIMIZED_VERT
MAXIMIZED_BOTH//最大化voidsetDefaultCloseOperation(int);
//設(shè)置默認(rèn)的關(guān)閉時(shí)的操作,取值:
DO_NOTHING_ON_CLOSE
HIDE_ON_CLOSE
DISPOSE_ON_CLOSE
EXIT_ON_CLOSE//關(guān)閉創(chuàng)建用戶主窗口--JFrame16常用方法創(chuàng)建用戶主窗口--JFrame16importjavax.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)建17示例:直接使用JFrame創(chuàng)建17importjavax.swing.*;publicclassSecondJFrameextendsJFrame{publicSecondJFrame(){super(“MySecondJFrame”);setDefaultCloseOperation(EXIT_ON_CLOSE);setExtendedState(MAXIMIZED_BOTH);setVisible(true);}publicstaticvoidmain(String[]args){SecondJFramef=newSecondJFrame();}}示例:擴(kuò)展JFrame創(chuàng)建18importjavax.swing.*;示例:擴(kuò)展JFr相關(guān)類圖標(biāo)類:javax.swing.ImageIcon圖像類:java.awt.Image創(chuàng)建圖標(biāo)和圖像對(duì)象ImageIconii=newImageIcon(“x.gif”);Imageimage=ii.getImage();設(shè)置
setIconImage(image);19相關(guān)類19由JFrame創(chuàng)建初始的用戶界面由JPanel、JScrollPane、JTabbedPane、JSplitPane、JInternalFrame、Box等創(chuàng)建中間容器由基本組件類創(chuàng)建有關(guān)的組件將基本組件按照某種布局添加到中間容器中,根據(jù)需要可能會(huì)用到容器的嵌套將中間容器按照某種布局添加到頂層容器中,形成滿足用戶需求的操作界面界面的基本組織方式20由JFrame創(chuàng)建初始的用戶界面界面的基本組織方式20Containercon=getContentPane();JPanelpanel=newJPanel();JButtonbutt=newJButton("PressMe");panel.add(butt);con.add(panel);獲得JFrame的容器并添加組件21Containercon=getContentPane學(xué)生基本信息錄入界面的設(shè)計(jì)設(shè)計(jì)一個(gè)用戶界面,用于輸入學(xué)生的下列信息:姓名 JTextField 密碼 JPasswordField性別 JRadioButton 黨否 JCheckBox年齡 JSpinner 顏色JColorChooser加分 JSlider 系別 JComboBox選課 JList 確認(rèn) JButton保存 JFileChooser 結(jié)果 JTextArea要求輸入完畢按“確認(rèn)”將該學(xué)生的信息記錄到“結(jié)果”中;按“保存”將結(jié)果保存到一個(gè)指定的文件中;基本信息與結(jié)果界面上下分布在一個(gè)JSplitPane中;屏幕下方顯示當(dāng)前時(shí)間示例:學(xué)生信息管理系統(tǒng)22學(xué)生基本信息錄入界面的設(shè)計(jì)示例:學(xué)生信息管理系統(tǒng)22步驟一:由JFrame創(chuàng)建初始的用戶界面,獲得JFrame的容器,添加中間容器JPanel示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();f.setTitle("學(xué)生信息管理系統(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);23步驟一:由JFrame創(chuàng)建初始的用戶界面,獲得JFrame的基本組件24基本組件24標(biāo)簽標(biāo)簽(JLabel)是最簡(jiǎn)單的組件,用于顯示單行靜態(tài)文本。用戶只能查看其內(nèi)容而不能對(duì)其進(jìn)行修改。標(biāo)簽類沒有事件響應(yīng)。構(gòu)造方法JLabellabel1=newJLabel(“姓名”);ImageIconii=newImageIcon(“java.gif”);
JLabellabel2=newJLabel(ii);JLabellabel3=newJLabel(“姓名”,ii,JLabel.CENTER);標(biāo)簽內(nèi)容一般不需要改變,但也可以使用setText和setIcon方法進(jìn)行改變例如當(dāng)使用同一標(biāo)簽顯示不同的圖片時(shí),就可使用setIcon方法實(shí)現(xiàn)基本組件—標(biāo)簽25標(biāo)簽基本組件—標(biāo)簽25步驟二:添加標(biāo)簽(要錄入的基本信息的名稱)示例:學(xué)生信息管理系統(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);26步驟二:添加標(biāo)簽(要錄入的基本信息的名稱)示例:學(xué)生信息管理按鈕是常用的功能組件,表示按鈕的類為JButton。構(gòu)造方法JButtonbutton1=newJButton(“姓名”);ImageIconii=newImageIcon(“java.gif”);JButtonbutton2=newJButton(ii);JButtonbutton3=newJButton(“姓名”,ii);常用方法voidsetActionCommand(String);voidaddActionListener(ActionListener);基本組件—按鈕27按鈕是常用的功能組件,表示按鈕的類為JButton?;窘M件步驟二:添加按鈕(確認(rèn)和保存按鈕)示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();JPanelpan=newJPanel();JLabell_xml_xm=newJLabel("姓名");pan.add(l_xm);……JButtonb_sub=newJButton("確認(rèn)");pan.add(b_sub);JButtonb_save=newJButton("保存");pan.add(b_save);con.add(pan);f.setVisible(true);28步驟二:添加按鈕(確認(rèn)和保存按鈕)示例:學(xué)生信息管理系統(tǒng)JF構(gòu)造方法JTextFieldtf1=newJTextField(10);JTextFieldtf2=newTextField(“aa”);JTextFieldtf3=newJTextField(“aa”,8);ComponentTextComponentJTextFieldJTextArea單行的文本框多行的文本區(qū)基本組件—文本框(JTextField)其它方法
publicStringgetText()publicStringgetSelectedText()publicvoidsetText(Strings)publicvoidsetEchoChar(charc)publicvoidsetEditable(booleanb)29構(gòu)造方法ComponentTextComponentJTex步驟二:添加文本框(錄入姓名信息)示例:學(xué)生信息管理系統(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);30步驟二:添加文本框(錄入姓名信息)示例:學(xué)生信息管理系統(tǒng)JF構(gòu)造方法
JTextAreata1=newJTextArea(5,5);JTextAreata2=newJTextArea(“ab”,8,7);ComponentTextComponentJTextFieldJTextArea單行的文本框多行的文本區(qū)基本組件—文本區(qū)(JTextArea)其它方法publicgetCaretPosition()publicvoidinsert(Stringstr,intpos)publicStringgetSelectedText()publicintgetSelectionStart()publicintgetSelectionEnd()publicvoidreplaceRange(Stringstr,intstart,intend)31構(gòu)造方法ComponentTextComponentJTex應(yīng)用中經(jīng)常將文本區(qū)對(duì)象放入一個(gè)滾動(dòng)窗格中,以使用滾動(dòng)條功能,方法如下:JTextAreata=newJTextArea(10,10);JScrollPanesp=newJScrollPane(ta);基本組件—文本區(qū)(JTextArea)32應(yīng)用中經(jīng)常將文本區(qū)對(duì)象放入一個(gè)滾動(dòng)窗格中,以使用滾動(dòng)條功能,步驟二:添加文本域(顯示錄入結(jié)果信息)示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……Jlabell_jg=newJLabel("錄入結(jié)果");JTextArearesult=newJTextArea(10,30);JScrollPanesp=newJScrollPane(result);pan.add(sp);pan.add(l_jg);……con.add(pan);f.setVisible(true);33步驟二:添加文本域(顯示錄入結(jié)果信息)示例:學(xué)生信息管理系統(tǒng)基本組件—單選按鈕(JRadioButton)構(gòu)造方法(與JButton類似)JRadioButtonrbutt1=newJRadioButton(“男”,true);ImageIconii=newImageIcon(“java.gif”);
JRadioButtonrbutt2=newJRadioButton(ii);JRadioButtonrbutt3=newJRadioButton(“女”,ii,false);常用方法voidaddActionListener(ActionListener);voidaddItemListener(ItemListener);booleanisSelected();voidsetSelected(boolean);34基本組件—單選按鈕(JRadioButton)構(gòu)造方法(使用單選按鈕時(shí)經(jīng)常用到ButtonGroup類,如下創(chuàng)建按鈕組對(duì)象
ButtonGroupbg=newButtonGroup();創(chuàng)建若干單選按鈕對(duì)象
JRadioButtonb1=newJRadioButton(“x”);
JRadioButtonb2=newJRadioButton(“y”);將各單選按鈕添加到按鈕組中
bg.add(b1);
bg.add(b2);將單選按鈕添加到其他容器中
容器對(duì)象.add(b1);
容器對(duì)象.add(b2);注:按鈕組維持只有一個(gè)單選按鈕處于選擇狀態(tài)基本組件—單選按鈕(JRadioButton)35使用單選按鈕時(shí)經(jīng)常用到ButtonGroup類,如下基本組件步驟二:添加單選按鈕(選擇性別)示例:學(xué)生信息管理系統(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);36步驟二:添加單選按鈕(選擇性別)示例:學(xué)生信息管理系統(tǒng)JFr構(gòu)造方法JCheckbox()創(chuàng)建一個(gè)沒有標(biāo)簽的復(fù)選框。JCheckbox(Iconicon)創(chuàng)建一個(gè)有圖標(biāo)的復(fù)選框。JCheckbox(Iconicon,booleansele)創(chuàng)建一個(gè)有圖標(biāo)icon的復(fù)選框,初始狀態(tài)為selsJCheckbox(Strings)創(chuàng)建一個(gè)有標(biāo)簽的復(fù)選框。JCheckbox(Strings,booleanb)創(chuàng)建一個(gè)有標(biāo)簽的復(fù)選框,參數(shù)b設(shè)置初始狀態(tài)JCheckbox(Stringstr,Iconicon)創(chuàng)建一個(gè)有str文字及圖標(biāo)icon的復(fù)選框JCheckbox(Stringstr,Iconicon,booleansele)創(chuàng)建一個(gè)有str文字及圖標(biāo)icon的復(fù)選框,初始狀態(tài)為sels基本組件—復(fù)選框(JCheckbox)37構(gòu)造方法基本組件—復(fù)選框(JCheckbox)37常用方法isSelected():返回復(fù)選按鈕的狀態(tài),返回類型是boolean。如果返回true,則表示該按鈕處于選中狀態(tài);否則處于未選中狀態(tài)。setSelected(Booleanstate):設(shè)置復(fù)選按鈕的狀態(tài)?;窘M件—復(fù)選框(JCheckbox)38常用方法基本組件—復(fù)選框(JCheckbox)38步驟二:添加復(fù)選框(選擇愛好,多項(xiàng)選擇)示例:學(xué)生信息管理系統(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);39步驟二:添加復(fù)選框(選擇愛好,多項(xiàng)選擇)示例:學(xué)生信息管理系構(gòu)造方法Stringss[]={“red”,”green”,”blue”};
JListlist1=newJList(ss);JListlist2=newJList(Vector);其它常用方法
voidaddListSelectionListener(…);voidsetVisibleRowCount(int);voidsetSelectionMode(int);
//取值如下(在ListSelectionModel中定義)
SINGLE_SELECTION
SINGLE_INTERVAL_SELECTION
MULTIPLE_INTERVAL_SELECTION(默認(rèn))intgetSelectedIndex();int[]getSelectedIndices();ObjectgetSelectedValue();Object[]getSelectedValues();基本組件—列表框(JList)40構(gòu)造方法基本組件—列表框(JList)40步驟二:添加列表框(選擇選修課程)示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_xk=newJLabel("選課");String[]coursesNames={"數(shù)據(jù)結(jié)構(gòu)“,"操作系統(tǒng)“,"網(wǎng)絡(luò)原理","Java程序設(shè)計(jì)“,"分布式系統(tǒng)開發(fā)技術(shù)","計(jì)算機(jī)導(dǎo)論“,"密碼學(xué)","計(jì)算機(jī)組成原理“,"編譯原理","圖形學(xué)”};course=newJList(coursesNames);pan.add(l_xk);pan.add(course);……con.add(pan);f.setVisible(true);41步驟二:添加列表框(選擇選修課程)示例:學(xué)生信息管理系統(tǒng)JF構(gòu)造方法Stringss[]={“red”,”green”,”blue”};
JComboBoxcb1=newJComboBox(ss);JComboBoxcb2=newJComboBox(Vector);常用方法addItem()添加一個(gè)項(xiàng)目到JComboBox.get/setSelectedIndex()獲取/設(shè)置JComboBox中選中項(xiàng)目的索引get/setSelectedItem()獲取/設(shè)置選中的對(duì)象。removeAllItems()從JComboBox刪除所有對(duì)象。removeItem()從JComboBox刪除特定對(duì)象。setEditable把一個(gè)組合框設(shè)置為可編輯的。注意編輯只會(huì)影響當(dāng)前項(xiàng),它不會(huì)改變列表的內(nèi)容?;窘M件—下拉列表(JComboBox)42構(gòu)造方法基本組件—下拉列表(JComboBox)42步驟二:添加下拉列表(選擇院系)示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JLabell_yx=newJLabel("院系");pan.add(l_yx);String[]departmentNames={"計(jì)算機(jī)科學(xué)與技術(shù)系","電子信息與技術(shù)系","計(jì)算機(jī)工程系”};JComboBoxdepartment=newJComboBox(departmentNames);department.setEditable(false);pan.add(department);
……con.add(pan);f.setVisible(true);43步驟二:添加下拉列表(選擇院系)示例:學(xué)生信息管理系統(tǒng)JFr構(gòu)造方法(類似于JTextField)常用方法voidaddActionListener(ActionListener);char[]getPassword();voidsetEchoChar(char);chargetEchoChar();基本組件—密碼域(JPasswordField)44構(gòu)造方法(類似于JTextField)基本組件—密碼域(J步驟二:添加密碼(密碼輸入顯示“*”)示例:學(xué)生信息管理系統(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);45步驟二:添加密碼(密碼輸入顯示“*”)示例:學(xué)生信息管理系統(tǒng)構(gòu)造方法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基本組件—滑動(dòng)條(JSlider)46構(gòu)造方法基本組件—滑動(dòng)條(JSlider)46步驟二:添加加分選項(xiàng)(加分的選項(xiàng)采用滑動(dòng)條實(shí)現(xiàn))示例:學(xué)生信息管理系統(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);47步驟二:添加加分選項(xiàng)(加分的選項(xiàng)采用滑動(dòng)條實(shí)現(xiàn))示例:學(xué)生信構(gòu)造方法JProgressBar(int,int,int);JProgressBarpb=newJProgressBar(JProgressBar. HORIZONTAL,0,100);常用方法voidaddChangeListener(ChangeListener);voidsetValue(int);//設(shè)置當(dāng)前值voidsetString(String);
//設(shè)置顯示的字符串voidsetStringPainted(boolean);
//設(shè)置是否顯示字符串,默認(rèn)為falsevoidsetBorderPainted(boolean);
//設(shè)置是否顯示邊框,默認(rèn)為true基本組件—進(jìn)度條(JProgressBar)48構(gòu)造方法基本組件—進(jìn)度條(JProgressBar)48步驟二:添加進(jìn)度條示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame();……Containercon=f.getContentPane();Jpanelpan=newJPanel();……JProgressBarprogbar=newJProgressBar(JProgressBar.HORIZONTAL,0,100);progbar.setStringPainted(true);……con.add(pan);f.setVisible(true);49步驟二:添加進(jìn)度條示例:學(xué)生信息管理系統(tǒng)JFramef=n構(gòu)造方法JFileChooserfc1,fc2;//聲明兩個(gè)對(duì)象變量fc1=newJFileChooser();//使用系統(tǒng)默認(rèn)目錄fc2=newJFileChooser(“d:\\java”);顯示方法intshowOpenDialog(Component);intshowSaveDialog(Component);
//分別用于顯示標(biāo)準(zhǔn)的打開和保存對(duì)話框
//參數(shù)Component指定對(duì)話框依附的父組件
//返回值:APPROVE_OPTION 選擇了確認(rèn)
CANCEL_OPTION 選擇了取消
ERROR_OPTION 出現(xiàn)了錯(cuò)誤基本組件—文件選擇器(JFileChooser)50構(gòu)造方法基本組件—文件選擇器(JFileChooser)其他常用方法voidsetCurrentDirectory(File);voidsetMultiSelectionEnabled(boolean);FilegetSelectedFile();File[]getSelectedFiles();FilegetCurrentDirectory();StringgetName(File);
//取得文件/目錄名稱,不含路徑,可用File類的getAbsolutePath()方法獲取完整路徑voidsetFileSelectionMode(int);
//FILES_ONLY只能選擇文件(默認(rèn))
DIRECTORIES_ONLY只能選擇目錄
FILES_AND_DIRECTORIES文件和目錄都可選voidsetFileFilter(FileFilter);51其他常用方法51顯示方法使用JColorChooser提供的類方法showDialogstaticColorshowDialog(
Component,//父組件
String,//標(biāo)題
Color//初始顏色值
);
//返回值:新選擇的顏色值Color示例 Colorc=JColorChooser.showDialog
(this,”請(qǐng)選擇顏色”,Color.red); //得到顏色對(duì)象c后,即可在需要的地方使用基本組件—顏色選擇器(JColorChooser)52顯示方法基本組件—顏色選擇器(JColorChooser)5Confirm對(duì)話框intshowConfirmDialog(Component,Object);
//顯示含有Yes、No、Cancel按鈕的確認(rèn)框
//參數(shù):父組件,顯示信息
//返回值:
YES_OPTION 是
NO_OPTION 否
CANCEL_OPTION 撤銷
OK_OPTION 確定
CLOSED_OPTION 關(guān)閉還有其他形式的類方法,請(qǐng)參閱幫助文檔基本組件—對(duì)話框(
JOptionPane)53Confirm對(duì)話框基本組件—對(duì)話框(JOptionPanInput對(duì)話框StringshowInputDialog(Component,Object);
//參數(shù):父組件,顯示信息
//返回值:
·選擇確認(rèn)后返回輸入的字符串
·選擇取消或關(guān)閉后返回null還有其他形式的類方法,請(qǐng)參閱幫助文檔基本組件—對(duì)話框(
JOptionPane)54Input對(duì)話框基本組件—對(duì)話框(JOptionPane)Message對(duì)話框voidshowMessageDialog(Component,Object);
//參數(shù):父組件,顯示信息
//沒有返回值,只是用來顯示一些信息還有其他形式的類方法,請(qǐng)參閱幫助文檔基本組件—對(duì)話框(
JOptionPane)55Message對(duì)話框基本組件—對(duì)話框(JOptionPanOption對(duì)話框intshowOptionDialog(
Component,//父組件
Object,//顯示信息
String,//標(biāo)題
int,//標(biāo)準(zhǔn)選項(xiàng)按鈕組類型
int,//標(biāo)準(zhǔn)信息圖標(biāo)類型
Icon,//自定義信息圖標(biāo)
Object[],//自定義選項(xiàng)按鈕組
Object//自定義默認(rèn)的選項(xiàng)按鈕
);
//該方法提供了豐富且復(fù)雜的表達(dá)形式,請(qǐng)參閱幫助文檔注:使用這些標(biāo)準(zhǔn)對(duì)話框,可以方便實(shí)現(xiàn)某些功能基本組件—對(duì)話框(
JOptionPane)56Option對(duì)話框基本組件—對(duì)話框(JOptionPane微調(diào)器(JSpinner)
構(gòu)造方法JSpinnerspinner=newJSpinner();常用方法voidaddChangeListener(ChangeListener);voidsetValue(Object);ObjectgetValue();ObjectgetNextValue();ObjectgetPreviousValue();57微調(diào)器(JSpinner)
構(gòu)造方法57示例:學(xué)生信息管理系統(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)器58示例:學(xué)生信息管理系統(tǒng)JFramef=newJFrame計(jì)時(shí)器(Timer)
構(gòu)造方法Timer(int,ActionListener);
Timertimer=newTimer(1000,this);常用方法voidstart();voidstop();voidrestart();voidsetDelay(int);voidsetRepeats(boolean);booleanisRunning();59計(jì)時(shí)器(Timer)
構(gòu)造方法59創(chuàng)建邊框(使用BorderFactory類的類方法)Borderborder1=//創(chuàng)建一個(gè)具有指定顏色和寬度的線邊框BorderFactory.createLineBorder(Color,int);Borderborder2=
BorderFactory.createTitledBorder(String);
創(chuàng)建一個(gè)新標(biāo)題邊框,采用默認(rèn)設(shè)置,并指定了標(biāo)題文本。Borderborder3=BorderFactory.createLoweredBevelBorder();
創(chuàng)建一個(gè)具有凹入斜面邊緣的邊框Borderborder4=
BorderFactory.createRaisedBevelBorder();創(chuàng)建一個(gè)具有凸出斜面邊緣的邊框Borderborder5=
BorderFactory.createEtchedBevelBorder();創(chuàng)建一個(gè)具有“浮雕化”外觀效果的邊框,將組件的當(dāng)前背景色用于突出顯示和陰影顯示使用setBorder(border)方法設(shè)置組件的邊框組件的邊框設(shè)置邊框(Border)60創(chuàng)建邊框(使用BorderFactory類的類方法)組件的邊分隔線(JSeparator)構(gòu)造方法JSeparatorseparator1=
newJSeparator();//默認(rèn)水平JSeparatorseparator2=
newJSeparator(JSeparator.HORIZONTAL);JSeparatorseparator3=
newJSeparator(JSeparator.VERTICAL);使用add(JSeparator)方法加到合適的地方組件的分隔線設(shè)置61分隔線(JSeparator)組件的分隔線設(shè)置61設(shè)置顏色默認(rèn)情況下,Java使用RGB顏色描述系統(tǒng)RGB指紅/綠/藍(lán)三基色,取值范圍是[0,255],一種顏色就是這三種基本顏色的組合描述顏色的類是java.awt.Color顏色對(duì)象的創(chuàng)建Colorc=newColor(0,255,0);直接使用Color類中定義的標(biāo)準(zhǔn)顏色常量
如Color.BLACK或Color.black等 Colorc1=Color.BLACK;//Color.blackC)顏色選擇器JColorChooser直觀得到一個(gè)Color對(duì)象Colorc3=JColorChooser.showDialog(
Component,String,Color);組件的顏色設(shè)置62設(shè)置顏色組件的顏色設(shè)置62有了Color對(duì)象后,可使用
setForeground(Color);
setBackground(Color);
設(shè)置組件的前景色和背景色組件的顏色設(shè)置63有了Color對(duì)象后,可使用
setForeground(字體類:java.awt.Font字體對(duì)象的創(chuàng)建Font(Stringname,intstyle,intsize);
//名稱,如“隸書”
//風(fēng)格,取值有PLAIN,BOLD,ITALIC
//大小,如24,60Fontf=newFont(“宋體”,Font.BOLD,24);設(shè)置組件的字體setFont(Font);組件的字體設(shè)置64字體類:java.awt.Font組件的字體設(shè)置64光標(biāo)類:java.awt.Cursor光標(biāo)對(duì)象的獲取Cursor.getPredefinedCursor(int);
//如:DEFAULT_CURSOR、HAND_CURSOR、WAIT_CURSOR、TEXT_CORSOR、CROSSHAIR_CURSOR設(shè)置組件的光標(biāo)setCursor(Cursor.HAND_CURSOR);組件的光標(biāo)設(shè)置65光標(biāo)類:java.awt.Cursor組件的光標(biāo)設(shè)置65JPanel創(chuàng)建對(duì)象
JPanelp=newJPanel();默認(rèn)布局為FlowLayout,可以改變,如
p.setLayout(newGridLayout(2,3));添加組件
p.add(組件對(duì)象1);
p.add(組件對(duì)象2);
……中間容器的使用66JPanel中間容器的使用66JScrollPaneJTextAreata=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);中間容器的使用67JScrollPane中間容器的使用67JTabbedPaneJTabbedPanetp=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();中間容器的使用68JTabbedPane中間容器的使用68JInternalFrame示例:ExampleCh07_Jframe.java中classJInternalFrame_test中間容器的使用69JInternalFrame中間容器的使用69Java用戶圖形界面設(shè)計(jì)步驟根據(jù)需要往界面中添加組件通過布局管理器對(duì)容器中的組件進(jìn)行組織排列如何相應(yīng)用戶對(duì)組件的操作,即事件處理小結(jié)70Java用戶圖形界面設(shè)計(jì)步驟小結(jié)70布局管理71布局管理71布局是指組件在容器中的排列方式,主要有:FlowLayout 流式布局BorderLayout 邊界布局GridLayout 網(wǎng)格布局CardLayout 卡片布局BoxLayout 盒式布局GridBagLayout 網(wǎng)格包布局null 空布局(不使用布局)注:對(duì)于一些復(fù)雜的情況,往往需要使用容器的嵌套,各容器可使用不同的布局。當(dāng)容器的尺寸改變時(shí),布局管理器會(huì)自動(dòng)調(diào)整組件的排列布局的概念72布局是指組件在容器中的排列方式,主要有:布局的概念72該布局以行為單位依次排列各組件,一行排不下時(shí),另起一行JPanel的默認(rèn)布局是FlowLayout構(gòu)造方法FlowLayout();FlowLayout(intalign);
//align一般取值有:CENTER、LEFT、RIGHTFlowLayout(intalign,inthgap,intvgap);
//hgap和vgap指定組件與容器起始邊界以及組件間的水平和垂直間距,默認(rèn)值為5個(gè)像素例如:FlowLayoutlayout=new
FlowLayout(FlowLayout.LEFT,10,10);FlowLayout73該布局以行為單位依次排列各組件,一行排不下時(shí),另起一行Flo創(chuàng)建FlowLayout布局對(duì)象
FlowLayoutl=newFlowLayout();創(chuàng)建容器對(duì)象
JPanelpanel=newJPanel();設(shè)置容器對(duì)象的布局或使用默認(rèn)布局
panel.setLayout(l);向容器中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
panel.add(組件對(duì)象);FlowLayout布局的使用74創(chuàng)建FlowLayout布局對(duì)象
FlowLayoutl例如,setLayout(newFlowLayout(FlowLayout.LEFT,10,20));缺點(diǎn):當(dāng)用戶對(duì)由FlowLayout布局管理的區(qū)域進(jìn)行縮放時(shí),布局發(fā)生變化。該布局適用于組件個(gè)數(shù)較少的情況。FlowLayout布局的使用75例如,setLayout(newFlowLayout(Fl按照東、西、南、北、中5個(gè)方位排列各組件頂層容器JFrame、JApplet、JDialog、JWindow的默認(rèn)布局都是BorderLayoutBorderLayout76按照東、西、南、北、中5個(gè)方位排列各組件BorderLayo構(gòu)造方法BorderLayout();BorderLayout(inthgap,intvgap);
//hgap和vgap指定組件間的水平和垂直間距,默認(rèn)值為0個(gè)像素例如:BorderLayoutlay1=newBorderLayout(); BorderLayoutlay2=newBorderLayout(10,10);BorderLayout77構(gòu)造方法BorderLayout77創(chuàng)建BorderLayout布局對(duì)象
BorderLayoutl=newBorderLayout();創(chuàng)建容器對(duì)象
JPanelpanel=newJPanel();設(shè)置容器對(duì)象的布局或使用默認(rèn)布局
panel.setLayout(l);向容器中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
panel.add(組件對(duì)象,方位);
//方位的取值為:
BorderLayout.EAST或“East”
BorderLayout.WEST或“West”
BorderLayout.SOUTH或“South”
BorderLayout.NORTH或“North”
BorderLayout.CENTER或“Center”(默認(rèn))BorderLayout布局的使用78創(chuàng)建BorderLayout布局對(duì)象
BorderLayou缺點(diǎn):當(dāng)加入的組件超過5個(gè)時(shí),就必須使用容器的嵌套或其它布局。優(yōu)點(diǎn):當(dāng)容器縮放時(shí),組件相應(yīng)的位置不變化,但大小改變。示例:
邊界布局示例BorderLayout布局的使用79缺點(diǎn):當(dāng)加入的組件超過5個(gè)時(shí),就必須使用容器的嵌套或其它布局按照二維網(wǎng)格以相同大小依次排列各組件構(gòu)造方法GridLayout();//一行、每個(gè)組件一列GridLayout(introws,intcols);//行列數(shù)GridLayout(rows,cols,inthgap,intvgap);
//行行、列列的間距,默認(rèn)值為0個(gè)像素例如:GridLayoutlay1=newGridLayout(3,3);GridLayoutlay2=newGridLayout(5,2,10,10);GridLayout80按照二維網(wǎng)格以相同大小依次排列各組件GridLayout80創(chuàng)建GridLayout布局對(duì)象
GridLayoutl=newGridLayout(2,2);創(chuàng)建容器對(duì)象
JPanelpanel=newJPanel();設(shè)置容器對(duì)象的布局或使用默認(rèn)布局
panel.setLayout(l);向容器中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
panel.add(組件對(duì)象);布局的使用81創(chuàng)建GridLayout布局對(duì)象
GridLayoutl該布局適用于組件個(gè)數(shù)較多的情況。優(yōu)點(diǎn):組件的相應(yīng)位置不隨區(qū)域的縮放而改變,只是組件的大小改變。GridLayout82該布局適用于組件個(gè)數(shù)較多的情況。優(yōu)點(diǎn):組件的相應(yīng)位置不隨區(qū)域從網(wǎng)格出發(fā)來布局組件,但一個(gè)組件在橫向和縱向上都可以占據(jù)多個(gè)網(wǎng)格,靈活但比較復(fù)雜使用GridBagConstraints指定組件在布局時(shí)的有關(guān)約束值GridBagLayout83從網(wǎng)格出發(fā)來布局組件,但一個(gè)組件在橫向和縱向上都可以占據(jù)多個(gè)屬性(11個(gè))gridx,gridy–位置gridwidth,gridheight–占據(jù)網(wǎng)格數(shù)anchor–方位fill–充滿方式j(luò)avax.awt.GridBagConstraints.HORIZONTALjavax.awt.GridBagConstraints.VERTICALjavax.awt.GridBagConstraints.BOTH創(chuàng)建對(duì)象GridBagConstraintsgbc1,gbc2;gbc1=newGridBagConstraints();gbc2=newGridBagConstraints(…);GridBagConstraints84屬性(11個(gè))GridBagConstraints84GridBagLayoutgbl=newGridBagLayout();JPanelpanel=newJPanel();panel.setLayout(gbl);GridBagConstraintsgbc=newGridBagConstraints();
……//設(shè)置JButtonbutton=newJButton("Button");panel.add(button,gbc);布局的使用85GridBagLayoutgbl=newGridBa畫出組件布局草圖確定每個(gè)組件應(yīng)占據(jù)的網(wǎng)格分別在x和y方向上為網(wǎng)格標(biāo)上序號(hào)組件的gridx,gridy,gridwidth,gridheight據(jù)填充和對(duì)齊要求設(shè)置fill和anchor值須保持默認(rèn)大小的組件的weightx和weighty值設(shè)為0,其余的設(shè)為100看是否需要設(shè)置填塞值insets和ipadx、ipady編寫代碼運(yùn)行程序,觀察結(jié)果,必要時(shí)進(jìn)行修改一般布局步驟86畫出組件布局草圖一般布局步驟86該布局以一疊卡片的形式依次排列各組件構(gòu)造方法CardLayout();CardLayout(inthgap,intvgap);
//組件與容器邊界間距,默認(rèn)值為0個(gè)像素例如:CardLayoutlayout1=newCardLayout();CardLayoutlayout2=newCardLayout(10,10);CardLayout87該布局以一疊卡片的形式依次排列各組件CardLayout87創(chuàng)建CardLayout布局對(duì)象
CardLayoutl=newCardLayout();創(chuàng)建容器對(duì)象
JPanelpanel=newJPanel();設(shè)置容器對(duì)象的布局或使用默認(rèn)布局
panel.setLayout(l);向容器中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
panel.add(組件對(duì)象,“名稱”);顯示組件l.show(panel,“名稱”);l.first(panel);l.last(panel);l.next(panel);l.previous(panel);布局的使用88創(chuàng)建CardLayout布局對(duì)象
CardLayoutl以一行或一列的方式依次排列各組件容器Box的默認(rèn)布局為且只能為BoxLayout在實(shí)際應(yīng)用中,常使用Box的有關(guān)方法實(shí)現(xiàn)布局javax.swing.Box類的使用創(chuàng)建Box對(duì)象
Boxb1=Box.createHorizontalBox();
創(chuàng)建一個(gè)從左到右顯示其組件的Box
Boxb2=Box.createVerticalBox();
創(chuàng)建一個(gè)從上到下顯示其組件的Box向盒子中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
b1.add(組件對(duì)象);BoxLayout89以一行或一列的方式依次排列各組件BoxLayout89添加Glue:Glue用來對(duì)組件進(jìn)行擠壓,產(chǎn)生左對(duì)齊、右對(duì)齊或兩端對(duì)齊的效果b1.add(Box.createHorizontalGlue());b2.add(Box.createVerticalGlue());添加Strut:Strut用來加入組件間的間距b1.add(Box.createHorizontalStrut(5));b2.add(Box.createVerticalStrut(5));添加RigidArea:RigidArea用來設(shè)置組件的間距和高度(寬度和間距)Dimensiond=newDimension(50,80);b1.add(Box.createRigidArea(d));b2.add(Box.createRigidArea(d));向盒子中添加必要的透明組件90添加Glue:Glue用來對(duì)組件進(jìn)行擠壓,產(chǎn)生左對(duì)齊、右對(duì)不使用任何布局管理器,一般不使用該方式空布局的使用創(chuàng)建容器對(duì)象
JPanelpanel=newJPanel();設(shè)置容器對(duì)象的布局為null
panel.setLayout(null);設(shè)置組件在容器中的位置
組件對(duì)象.setBounds(x,y,width,height);向容器中添加組件對(duì)象(設(shè)組件對(duì)象已創(chuàng)建)
panel.add(組件對(duì)象);NULL91不使用任何布局管理器,一般不使用該方式NULL91如實(shí)現(xiàn)以下界面,可以采用哪些布局管理方式:布局管理器的選擇92如實(shí)現(xiàn)以下界面,可以采用哪些布局管理方式:布局管理器的選擇9事件處理93事件處理93事件處理機(jī)制事件:Java語(yǔ)言將每一個(gè)鍵盤或鼠標(biāo)的操作定義為一個(gè)“事件”。clickme!當(dāng)用戶點(diǎn)擊了一個(gè)按鈕,意味著一個(gè)按鈕事件的發(fā)生。事件響應(yīng):當(dāng)事件發(fā)生時(shí)程序應(yīng)該作出何種響應(yīng)。事件處理方法對(duì)該事件進(jìn)行響應(yīng)事件處理概述94事件處理機(jī)制clickme!當(dāng)用戶點(diǎn)擊了一個(gè)按鈕,意味著一事件處理的模型事件源:產(chǎn)生事件的組件叫事件源。事件對(duì)象:描述系統(tǒng)中發(fā)生了什么的對(duì)象事件監(jiān)聽器:對(duì)事件進(jìn)行處理的類。事件對(duì)象事件監(jiān)聽器事件源事件處理概述95事件處理的模型事件對(duì)象事件監(jiān)聽器事件源事件處理概述95
Java有20多個(gè)預(yù)定義的事件類,它們包含了所有組件上可能發(fā)生的事件。每一個(gè)事件都有一個(gè)相應(yīng)的事件接口,事件接口中的事件處理方法完成對(duì)事件的處理。事件處理概述java.util.EventObjectjava.awt.AWTEventComponentEventAdjustmentEventItemEventActionEventTextEventFocusEventContainerEventInputEventPaintEventWindowEventKeyEventMouseEvent96Java有20多個(gè)預(yù)定義的事件類,它們包含了所有組件上可能事件源事件對(duì)象事件監(jiān)聽器事件處理回顧創(chuàng)建一個(gè)實(shí)現(xiàn)了某個(gè)監(jiān)聽器接口的類97事件源事件處理回顧創(chuàng)建一個(gè)實(shí)現(xiàn)了某個(gè)監(jiān)聽器接口的類97常見的事件及其監(jiān)聽器一覽表事件名稱監(jiān)聽器主要用途W(wǎng)indowEventWindowListener窗口發(fā)生變化,如關(guān)閉ActionEventActionListener產(chǎn)生動(dòng)作,如單擊按鈕ItemEventItemListener項(xiàng)目變化,如復(fù)選框ListSelectionEventListSelectionListener選擇列表中的項(xiàng)目時(shí)ChangeEventChangeListener狀態(tài)改變,如進(jìn)度條FocusEventFocusListener焦點(diǎn)獲得或失去MouseEventMouseListener鼠標(biāo)點(diǎn)擊、進(jìn)入或離開MouseEventMouseMotionListener鼠標(biāo)拖動(dòng)或移動(dòng)KeyEventKeyListener按鍵產(chǎn)生時(shí)MenuEventMenuListener菜單選擇時(shí)98常見的事件及其監(jiān)聽器一覽表事件名稱監(jiān)聽器主要用途W(wǎng)indow創(chuàng)建將要產(chǎn)生事件的組件對(duì)象構(gòu)造實(shí)現(xiàn)相應(yīng)事件監(jiān)聽器接口的類,并創(chuàng)建事件監(jiān)聽器對(duì)象為組件對(duì)象增加事件監(jiān)聽器對(duì)象:
組件對(duì)象.addXxxListener(事件監(jiān)聽器對(duì)象);
如:button.addActionListener(this);注:接口中的方法都含有所產(chǎn)生的事件對(duì)象參數(shù),使用該參數(shù)的getSource()方法可以得到產(chǎn)生該事件的事件源例如:publicvoidactionPerformed(ActionEventevt);事件處理一般方法99創(chuàng)建將要產(chǎn)生事件的組件對(duì)象事件處理一般方法99ActionEvent與ActionListener當(dāng)單擊按鈕、在文本域中回車、選擇組合框中的項(xiàng)目、選擇菜單項(xiàng)時(shí)產(chǎn)生該事件ActionListener接口中的方法 voidactionPerformed(ActionEvent);該事件在實(shí)際應(yīng)用中經(jīng)常被處理ActionEvent中的常用方法 StringgetActionCommand();
//獲得與該動(dòng)作相聯(lián)系的組件的命令字符串名稱,組件對(duì)象可使用
setActionCommand(String)方法進(jìn)行設(shè)置,默認(rèn)的命令字符串名稱是組件的標(biāo)簽名稱//使用該方法可實(shí)現(xiàn)不同組件共用同一段處理代碼事件處理100ActionEvent與ActionListener事件publicclassMyActionListenerextendsJFrameimplementsActionListener{privateJButtonbutton; publicMyActionListener() { button=newJButton(“開始”); button.addActionListener(this); } publicvoidactionPerformed(ActionEventevt) {if(evt.getSource()==button) {//(evt.getActionCommand().equals(“開始”)) System.out.println(“Start…”); } }}事件處理示例101publicclassMyActionListener示例在文本框中輸入英文單詞并回車,在另外一個(gè)文本框中立刻顯示漢語(yǔ)意思(TextFieldAction.java)102示例在文本框中輸入英文單詞并回車,在另外一個(gè)文本框中立刻顯示1、創(chuàng)建一個(gè)主窗口,顯示一個(gè)按鈕,當(dāng)點(diǎn)擊該按鈕時(shí),在標(biāo)題欄中顯示當(dāng)前的時(shí)間(DispTime.java)JFrameJButtonTimerActionListenerDateSimpleDateFormat2、點(diǎn)擊按鈕,在文本框中顯示點(diǎn)擊次數(shù)。 ActionTest.java示例1031、創(chuàng)建一個(gè)主窗口,顯示一個(gè)按鈕,當(dāng)點(diǎn)擊該按鈕時(shí),在標(biāo)題欄中ItemEvent與ItemListener當(dāng)單選按鈕、復(fù)選按鈕、下拉列表框中的項(xiàng)目狀態(tài)發(fā)生變化時(shí)產(chǎn)生該事件ItemListene
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 17715:2025 EN Flour from wheat (Triticum aestivum L.) - Amperometric method for starch damage measurement
- 2025-2030年中國(guó)智慧養(yǎng)老服務(wù)行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)汽車后市場(chǎng)行業(yè)開拓第二增長(zhǎng)曲線戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)控制線纜組件行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報(bào)告
- 收看《反腐為人民》心得體會(huì):弘揚(yáng)清風(fēng)正氣筑牢廉潔根基
- 年產(chǎn)xxx新型建材新型墻體材料項(xiàng)目可研報(bào)告模板
- 廣西河池市環(huán)江縣2021-2022學(xué)年五年級(jí)上學(xué)期英語(yǔ)期末試卷
- 商品加工知識(shí)培訓(xùn)課件
- 學(xué)校消防安全知識(shí)培訓(xùn)
- 債券價(jià)格的敏感性第五章
- 2023年長(zhǎng)沙市中考數(shù)學(xué)真題試卷及答案
- 《電力設(shè)備消防典型準(zhǔn)則》(DL5027-2022)
- 米吳科學(xué)漫畫奇妙萬象篇
- 河南省鄭州市金水區(qū)2022-2023學(xué)年三年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- XXX酒店開辦費(fèi)POB預(yù)算
- Z矩陣、Y矩陣、A矩陣、S矩陣、T矩陣定義、推導(dǎo)及轉(zhuǎn)換公式
- 中美歐規(guī)范樁基承載力計(jì)算設(shè)計(jì)對(duì)比
- 外科洗手操作考核評(píng)分表
- 復(fù)旦大學(xué)外國(guó)留學(xué)生入學(xué)申請(qǐng)表
- 長(zhǎng)安汽車發(fā)動(dòng)機(jī)水溫高故障案例分析處置
- 瞬時(shí)單位線法計(jì)算洪水
評(píng)論
0/150
提交評(píng)論