產(chǎn)品庫存管理系統(tǒng)剖析_第1頁
產(chǎn)品庫存管理系統(tǒng)剖析_第2頁
產(chǎn)品庫存管理系統(tǒng)剖析_第3頁
產(chǎn)品庫存管理系統(tǒng)剖析_第4頁
產(chǎn)品庫存管理系統(tǒng)剖析_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

產(chǎn)品庫存管理系統(tǒng)剖析bbb***(456)學習情境描述設計實現(xiàn)產(chǎn)品庫存管理系統(tǒng)的用戶登陸模塊及主界面。aaa***(123)登錄界面主界面所需知識容器與組件;布局管理器;事件處理機制;常用Swing組件的使用;重點及難點事件處理機制;常用Swing組件的使用;能力目標培養(yǎng)學生圖形用戶界面設計和實現(xiàn)的技能、閱讀代碼的能力、程序調試能力,養(yǎng)成良好的編碼風格培養(yǎng)學生英語閱讀能力和技術創(chuàng)新能力培養(yǎng)學生的自學能力、知識的融會貫通能力和動手實踐能力了解圖形用戶界面程序用戶圖形用戶界面多行文本框圖形用戶界面的組成組件單選按鈕單行文本框標簽復選按鈕按鈕組合框窗口面板容器組件與容器圖形用戶界面組件圖形化顯示與用戶交互放在容器內容器能容納其他組件和容器一種組件add()添加組件remove()移除組件GUI支持包java.awt包javax.swing包提供了大量地進行GUI設計所使用的類和接口Java語言進行GUI程序設計的基礎由100%純Java實現(xiàn)的,不依賴操作系統(tǒng)的支持使得Java的圖形用戶界面上了一個臺階AWT概述創(chuàng)建GUI通過java.awt包容器組件布局管理器字體事件圖形和繪制方法包含AWT容器組件以圖形表示的對象允許用戶交互創(chuàng)建并構造用于選擇新字體的對象用于用戶和系統(tǒng)交互AWT包含內容使用AWT圖形方法相對于窗口繪制圖形定義GUI組件的位置AWT(重量級組件)awt包中主要類之間的關系AWTEventFontComponentGraphicsMenuComponent布局管理器類ContainerPanelWindowAppletFrameSwing概述創(chuàng)建GUI通過Javax.swing包Swing包含內容容器組件可改變的外觀Java2D圖形繪制包含Swing組件以圖形表示的對象允許用戶交互使用Java2D繪制圖形可更換圖形界面的風格Swing(輕量級組件,純Java組件)Swing的類層次結構javax.DialogSwing組件是Container類的直接或間接子類。

任務1創(chuàng)建具有以下特征的窗口:

自定義窗口的標題;窗口的大小不可變。

標題最大化按鈕失效創(chuàng)建圖形用戶界面的基本步驟

選擇外觀布局管理器添加組件事件處理

創(chuàng)建容器保存內容顯示內容控制用戶輸入Swing外觀的設置3-1Swing采用MVC設計范式:即“模型-視圖-控制”??刂破饕晥D模型Swing外觀的設置3-2Swing采用可插入的外觀感覺,使得程序在一個平臺上運行時能夠有不同的外觀。Metal外觀Motif外觀Windows外觀Swing外觀的設置3-3publicstaticvoidmain(String[]args){//設定頁面外觀風格try{

}catch(ClassNotFoundExceptione){ e.printStackTrace();}catch(InstantiationExceptione){ e.printStackTrace();}catch(IllegalAccessExceptione){ e.printStackTrace();}catch(UnsupportedLookAndFeelExceptione){ e.printStackTrace();}UIManager.setLookAndFeel(“com.sun.Java.swing.plaf.windows.WindowsLookAndFeel”);//Windows風格UIManager.setLookAndFeel(“Javax.swing.plaf.metal.MetalLookAndFeel”);//Metal風格UIManager.setLookAndFeel("com.sun.Java.swing.plaf.motif.MotifLookAndFeel");//Motif風格UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//設定當前平臺外觀風格Swing容器組件主窗口Swing應用程序創(chuàng)建容器設置容器大?。▽蚣芗懊姘宥裕┰O置容器可見度(對框架及面板而言)創(chuàng)建頂層容器頂層容器(每個應用程序中至少有一個)內容面板主要顯示區(qū)域包含

GUI中的可視組件常用容器—JFrame的使用JFrame的使用2-1向JFrame中添加組件的兩種方式之一:用getContentPane()方法獲得JFrame的內容面板,再對其加入組件:

frame.getContentPane().add(childComponent)JFrame的使用2-2向JFrame中添加組件的兩種方式之二:把組件添加到Jpanel之類的中間容器中,用setContentPane()方法把該容器置為JFrame的內容面板:

JpanelcontentPane=newJpanel();

……//把其它組件添加到Jpanel中;frame.setContentPane(contentPane);

任務1:分析與實現(xiàn)importjavax.swing.*;importjava.awt.*;classGUIDemo1{{ staticvoidsetLocaleLookAndFeel(){ {

try{ { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exceptione){} } publicstaticvoidmain(String[]args) { GUIDemo1.setLocaleLookAndFeel();//選擇外觀風格 JFramef=newJFrame("第一個Java窗口");//創(chuàng)建容器 f.setSize(300,300);//設置容器大小 f.setVisible(true);//設置容器可見性

}}任務2實現(xiàn)如下圖所示的圖形用戶界面。布局管理器(LayoutManager)為了實現(xiàn)跨平臺的特性并獲得動態(tài)的布局效果,Java將容器內的所有組件安排給“布局管理器”負責管理。布局管理器管理當窗口移動或調整大小后組件如何變化等功能。容器可以通過選擇不同的布局管理器來決定布局。setLayout()方法可以設置容器的布局管理器。FlowLayout—流式布局管理器

FlowLayout是JPanel的默認布局管理器左右上下默認居中對齊FlowLayout使用示例importjava.awt.*;importjavax.swing.*;classFlowLayoutDemoextendsJFrame{JButtonjb1,jb2,jb3,jb4,jb5;publicFlowLayoutDemo(Stringtitle) {super(title);}voidinit(){Containerc=frame.getContentPane();jb1=newJButton("第一個按鈕");jb2=newJButton("第二個按鈕"); jb3=newJButton("第三個按鈕");jb4=newJButton("第四個按鈕"); jb5=newJButton("第五個按鈕"); c.setLayout(newFlowLayout());//設置布局管理器 c.add(jb1);c.add(jb2);c.add(jb3);c.add(jb4);c.add(jb5); }publicstaticvoidmain(String[]args){FlowLayoutDemoflowlayout=newFlowLayoutDemo("FlowLayoutDemo"); flowlayout.init(); flowlayout.pack(); flowlayout.setVisible(true);}}

BorderLayout—邊界布局管理器

NorthEastWestSouthCenter當容器大小變化時,組件的相對位置不變,大小發(fā)生變化BorderLayout—邊界布局管理器向BorderLayout布局的容器中添加組件時,可使用add(Component

compObj,Objectregion)方法。

組件對象表示區(qū)域的靜態(tài)常量實戰(zhàn):實現(xiàn)前面BorderLayout示例界面。BorderLayout—邊界布局管理器思考:橫向、縱向改變BorderLayout布局的容器大小,總結組件的變化規(guī)律。GridLayout—網(wǎng)格布局管理器

將容器的空間劃分成若干行、列的網(wǎng)格左右上下組件大小相同Swing常用容器—JPanel的使用JPanel面板是一種可以添加到其他容器中使用的容器組件。類中的方法獲得Swing常用組件的使用--JButtonJButton(按鈕)是一個常用組件,可以顯示文本或圖標,點擊時能夠響應單擊事件。任務2:分析與實現(xiàn)2-1設置了邊界的JPanel面板作為內容面板兩個按鈕添加到Jpanel面板中任務2:分析與實現(xiàn)2-2importjava.awt.*;importjavax.swing.*;classJPanelDemoextendsJPanel{JButtonb1=newJButton("JPanel");JButtonb2=newJButton("Demo");publicJPanelDemo(){ setBackground(Color.white); add(b1); add(b2);} publicstaticvoidmain(String[]args){ JPaneljp=newJPanelDemo(); jp.setBorder(BorderFactory.createTitledBorder("Hello,Border")); JFrameframe=newJFrame("JPanelDemo"); frame.setSize(200,150); frame.setContentPane(jp); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }}任務3設計實現(xiàn)一個簡單的計算器界面,如下圖所示。容器的嵌套一個包含了多個組件的容器本身可以作為一個組件加到另一個容器中去,容器中再添加容器,這樣就形成了容器的嵌套。一個Jpanel包含一個標簽一個Jpanel包含5個組件Swing常用組件的使用--JLabelJLabel(標簽)是用戶不能修改只能查看的文本/圖像顯示區(qū)域。Swing常用組件的使用--JTextFieldJTextField(單行文本域)是一個單行條形文本區(qū),能夠接收輸入、顯示輸出。Swing常用組件的使用--JPasswordFieldJPasswordField(口令框)接受用戶的輸入,但不會真正顯示出來,而是顯示回顯符。JPasswordField實例實戰(zhàn):實現(xiàn)上面的圖形用戶界面。Swing常用組件的使用--JTextAreaJTextArea(多行文本框)可以輸入或輸出多行文本。JTextArea的換行方式手動換行自動換行:通過設置換行屬性來避免手動換行

textArea.setLineWrap(true);增加滾動條:通過把文本區(qū)插入到一個滾動窗格中來實現(xiàn)。JScrollPanescrollPane=newJScrollPane(textArea);任務3:分析與實現(xiàn)importjava.awt.*;importjavax.swing.*;classCalculateextendsJFrame{privateJTextFieldtx1; privateJTextFieldtx2; privateJTextFieldtx3; privateJPanelp; publicCalculate(Stringtitle) {super(title);} voidinit() {Containerc=this.getContentPane();JLabellab=newJLabel("計算器舉例");JLabellabl=newJLabel("+"); tx1=newJTextField(5); tx2=newJTextField(5); tx3=newJTextField(5); JButtonb=newJButton("=");p=newJPanel();p.add(lab);p.add(tx1);p.add(labl);p.add(tx2);p.add(b);p.add(tx3);c.add(p);}publicstaticvoidmain(String[]args){Calculatecal=newCalculate("計算器"); cal.init(); cal.pack(); cal.setVisible(true); }}事件處理的實現(xiàn)

思考:觀察前面任務中實現(xiàn)的用戶界面,界面中的組件是否實現(xiàn)了與用戶交互的功能?NO!必須進行事件處理AWT事件處理機制—三類主要對象事件處理事件用戶對界面操作,以類的形式出現(xiàn)事件源事件發(fā)生的場所,通常就是各個組件事件處理者接收事件并對其進行處理的對象EventEventSourceEventhandlerAWT事件處理機制—事件處理模型組件(事件源)事件監(jiān)聽器事件監(jiān)聽器注冊①外部作用生成事件對象把事件對象傳入事件監(jiān)聽器②事件對象③④事件類和事件監(jiān)聽器

事件處理者(監(jiān)聽器)通常是一個類,負責處理一類事件該類如果要能夠處理某種類型的事件,就必須實現(xiàn)與該事件類型相對應的接口每個事件類對應于一個事件監(jiān)聽器接口AWT中常用事件類及事件監(jiān)聽器接口

事件處理的實現(xiàn)步驟

1.編寫一個事件監(jiān)聽器類,實現(xiàn)與事件類XxxEvent相對應的XxxListener接口;2.調用組件的addXxxListener方法,將監(jiān)聽器對象注冊到GUI組件上。事件處理舉例importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassTestJButtonextendsJFrameimplementsActionListener{ JButtonb; publicTestJButton() { b=newJButton("PressMe!"); b.addActionListener(this); setLayout(newFlowLayout()); add(b);

} publicstaticvoidmain(Stringargs[]) { TestJButtonb=newTestJButton(); b.setSize(200,100); b.setVisible(true); } publicvoidactionPerformed(ActionEvente) { System.out.println("Actionoccurred"); }}按鈕b是事件源,向b注冊一個事件監(jiān)聽器重寫監(jiān)聽器接口的方法事件處理器,實現(xiàn)監(jiān)聽器接口窗口關閉事件的實現(xiàn)importjavax.swing.*;importjava.awt.event.*;publicclassWindowClosing{publicstaticvoidmain(String[]args){ JFrameframe=newJFrame();//設置用戶關閉框架時的響應動作 frame.addWindowListener(newQuitWindow())fframe.setSize(200,300); frame.show();//顯示該框架}}向主窗口注冊窗口事件監(jiān)聽器importjava.awt.*;importjavax.swing.*;importjava.awt.event.*classQuitWindowimplementsWindowListener{ publicvoidwindowClosing(WindowEvente) { System.exit(0); } publicvoidwindowOpened(WindowEvente){} publicvoidwindowClosed(WindowEvente){} publicvoidwindowIconified(WindowEvente){} publicvoidwindowDeiconified(WindowEvente){} publicvoidwindowActivated(WindowEvente){} publicvoidwindowDeactivated(WindowEvente){}}必須實現(xiàn)接口中的所有方法實戰(zhàn):查閱JDK文檔,了解JButton組件對應的事件類型,為計算器界面中的按鈕組件添加事件處理代碼,實現(xiàn)加法功能。鼠標點擊6思考:使用事件監(jiān)聽器實現(xiàn)窗口關閉事件時,即便是我們不感興趣的方法,也必須一一實現(xiàn),增加了很多不必要的麻煩,有什么辦法可以解決這個問題?可以使用事件適配器解決這一問題事件適配器

事件適配器

一些Listener接口有適配器(Adapter)類,可以通過繼承事件所對應的Adapter類,重寫需要方法,無關方法不用實現(xiàn)。優(yōu)點:提供了一種簡單的實現(xiàn)監(jiān)聽器的手段,可以縮短程序代碼缺點:當需要多種監(jiān)聽器或此類已有父類時,無法采用適配器事件適配器及其對應的事件監(jiān)聽器接口實戰(zhàn):使用事件適配器實現(xiàn)窗口關閉事件。內部類在事件處理中的應用內部類的主要應用就是圖形用戶界面開發(fā)中的事件處理publicclassWindowClosing{ publicstaticvoidmain(String[]args){ JFrameframe=newJFrame(); classQuitWindowextendsWindowAdapter{ publicvoidwindowClosing(WindowEvente) { System.exit(0); }

} frame.addWindowListener(newQuitWindow()); frame.setSize(200,300); frame.show();}}實現(xiàn)窗口關閉事件匿名類在事件處理中的應用實現(xiàn)窗口關閉事件publicclassWindowClosing{ publicstaticvoidmain(String[]args) { JFrameframe=newJFrame(); frame.addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente) { System.exit(0); } }); frame.setSize(200,300); frame.show();}}內部類只使用一次時,可以使用匿名類,進一步簡化代碼其他Swing組件的使用

設計一個用來修改文字顏色和字形的界面,如下圖所示。任務4復選按鈕(JCheckBox)JCheckBox(復選按鈕)有選中和未選中兩種狀態(tài),允許用戶從一組選項中進行多個選擇。JCheckBox的相關事件類JCheckBox類的選擇事件是ItemEvent可實現(xiàn)ItemListener接口的itemStateChanged()方法來處理事件用addItemListener()方法注冊。查閱JDK文檔,學習ItemEvent類的常用方法。單選按鈕(JRadioButton)JRadioButton(單選按鈕)通常是成組使用的,可以通過ButtonGroup類進行管理。要保證三個JRadioButton的互斥性應該把這三個控件放到同一個ButtonGroup中查閱JDK文檔,學習JRadioButton類及ButtonGroup類的常用方法。任務4:分析與實現(xiàn)一個Jpanel包含一組復選按鈕一個Jpanel包含一組單選按鈕一個Jpanel包含一個標簽實戰(zhàn):獨立完成任務4的實現(xiàn)。任務5完善計算器的功能,實現(xiàn)加、減、乘、除四種運算。

組合框(JComboBox)

JComboBox(組合框)是一種“多選一”的組件,可編輯每項的內容,而且每項的內容可以是任意類。當用戶選取組合框中的某一選擇項時,可激發(fā)ItemEvent事件。查閱JDK文檔,學習JComboBox類的常用方法。JComboBox使用示例ItemEvent事件處理方式創(chuàng)建組合框,設置選項內容為數(shù)組s中的元素列表框(JList)

JList(列表框)向用戶顯示一組選項,并且允許用戶一次選擇其中的一項或多項。列表框查閱JDK文檔,學習JList類的常用方法及相關事件。實戰(zhàn):獨立完成任務5的實現(xiàn)。任務6設計實現(xiàn)如下圖所示的表格形式的界面。表格(JTable)

JTable(表格)的主要功能是把數(shù)據(jù)以二維表格的形式顯示出來。JTable的使用生成一個MyTableModel類型的對象來表示數(shù)據(jù)。用TableModel創(chuàng)建JTable對象。在JTable中添加滾動條面板。創(chuàng)建JTable表格可按四步進行:從AbstractTableModel類中繼承得到,getColumnCount,getRowCount,getColumnName,getValueAt四個方法必須重寫

任務6:分析與實現(xiàn)要繼承這個抽象類必須實現(xiàn)的四個方法用TableModel創(chuàng)建JTable在JTable中添加滾動條面板任務6:分析與實現(xiàn)JTable的相關事件類選中表格中的某行可以引發(fā)ListSelectionEvent事件。在事件處理之前,應通過setSelectionMode()方法設置選種模式。設置選種模式添加行選擇事件任務7設計實現(xiàn)如下圖所示的界面,要求拖動滾動條上的滑塊,滑塊指向的值顯示在界面的相應位置處。滾動條(JSlider)

JSlider(滾動條)是一種可以在某一數(shù)值范圍內進行值的線性調整的組件。JSlider的相關事件類當用戶拖動滑塊時,JSlider對象將產(chǎn)生一個ChangeEvent事件,此類事件是Swing包中提供的事件。查閱JDK文檔,學習ChangeEvent類的常用方法并了解Swing包中提供的事件類。實戰(zhàn):獨立完成任務7的分析與實現(xiàn)。任務8設計實現(xiàn)如下圖所示的界面,要求點擊下拉菜單項時窗口中輸出相應的操作。菜單

下拉式菜單主要由三部分組成:菜單條(JMenuBar)、菜單(JMenu)和菜單項(JMenuItem)。創(chuàng)建菜單的步驟publicclassMenuDemoextendsJFrameimplementsActionListener{ JTextAreatf=newJTextArea(); JMenuBarmbar=newJMenuBar(); JMenumenu=newJMenu("文件"); JMenuItemnewfile=newJMenuItem("新建"); JMenuItemopen=newJMenuItem("打開"); JMenuItemclose=newJMenuItem("關閉"); JMenuItemquit=newJMenuItem("退出");publicMenuDemo(){ super("Menu實例");newfile.addActionListener(this); open.addActionListener(this); close.addActionListener(this); quit.addActionListener(this);menu.add(newfile);menu.add(open);menu.add(close);menu.addSeparator();menu.add(quit); 創(chuàng)建JMenuBar對象創(chuàng)建JMenu對象創(chuàng)建JMenuItem對象添加事件處理向菜單中添加菜單項mbar.add(menu);setJMenuBar(mbar); getContentPane().add(tf); addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);} }); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==newfile)tf.setText("新建文件"); if(e.getSource()==open)tf.setText("打開文件"); if(e.getSource()==close)tf.setText("關閉文件"); if(e.getSource()==quit)System.exit(0); }publicstaticvoidmain(String[]args) JFramef=newMenuDemo(); f.setSize(200,200); f.setVisible(true);}}

添加菜單到菜單條中添加菜單條到窗口中對話框對話框的分類模式對話框必須在用戶處理完后才允許用戶與主窗口繼續(xù)進行交互非模式對話框允許用戶同時在對話框和程序剩余部分中輸入信息Swing中提供的對話框showMessageDialog:顯示一條消息等待用戶點擊OK;showConfirmDialog:顯示一條消息并等待確認;showOptionDialog:顯示一條消息并等待用戶在一組自定義選項中的選擇;showInputDialog:顯示一條消息并等待用戶的輸入。對話框的使用

intselection=JOptionPane.showConfirmDialog( DialogFrame.this,//父窗口 “Areyousure?”,//消息“Logout”,//對話框標題 JOptionPane.OK_CANCEL_OPTION,//底部按鈕類型 JOptionPane.WARNING_MESSAGE);//消息類型showMessageDialog、showInputDialog:

只能有一組標準按鈕,OK和OK/CANCELshowConfirmDialog:

DEFAULT_OPTION,YES_NO_OPTION,YES_NO_CANCEL_OPTION,OK_CANCEL__OPTION四種按鈕形式。鼠標鍵盤事件設計實現(xiàn)一個電子白板,可以用鼠標在上面繪畫,可用鍵盤在上面寫字。任務9鼠標事件--MouseEvent鼠標事件MouseEvent對應于接口MouseListener。鼠標事件--Mouse

溫馨提示

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

評論

0/150

提交評論