Java語言程序設(shè)計第9章 窗口、菜單和對話框.ppt_第1頁
Java語言程序設(shè)計第9章 窗口、菜單和對話框.ppt_第2頁
Java語言程序設(shè)計第9章 窗口、菜單和對話框.ppt_第3頁
Java語言程序設(shè)計第9章 窗口、菜單和對話框.ppt_第4頁
Java語言程序設(shè)計第9章 窗口、菜單和對話框.ppt_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第九章 窗口、菜單和對話框,本章的任務(wù): 介紹圖形用戶界面的高級組件。這些組件包括窗口、菜單和對話框等,它們可以構(gòu)造出標(biāo)準(zhǔn)GUI應(yīng)用程序。最后,簡要介紹Java Swing的使用方法。,本章主要內(nèi)容,1.窗口 2.菜單 3.對話框 4.Swing簡介,9.1 窗口,Java的窗口由Frame類生成,遺憾的是它不具有關(guān)閉功能,必須要在程序中實現(xiàn)窗口事件監(jiān)聽接口并編寫關(guān)閉窗口的代碼才行。 本節(jié)介紹創(chuàng)建可關(guān)閉窗口的幾種方法以及窗口的使用。,9.1.1 創(chuàng)建可關(guān)閉窗口,例9.1 方式1:創(chuàng)建一個可關(guān)閉的空白窗口,如圖所示。,import java.awt.*; import java.awt.even

2、t.*; class W1 extends Frame implements WindowListener W1() super(Window1); setSize(350,200); setVisible(true); addWindowListener(this); ,public void windowClosing(WindowEvent e) System.exit(0); public void windowOpened(WindowEvent e) public void windowClosed(WindowEvent e) public void windowIconifie

3、d(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) public static void main(String args) new W1(); ,9.1.2 窗口事件適配器,例9.2 方式2:創(chuàng)建一個可關(guān)閉的空白窗口。 import java.awt.*; import java.awt.event.*; public class W2 exten

4、ds Frame W2() super(Window2); setSize(350,200); setVisible(true); addWindowListener(new Win();, public static void main(String args) new W2(); class Win extends WindowAdapter public void windowClosing(WindowEvent e) System.exit(0); ,窗口事件適配器是為方便程序員而專門設(shè)計的類。定義 :,public abstract class WindowAdapter exte

5、nds Object implements WindowListener public WindowAdapter() / 構(gòu)造方法 public void windowOpened(WindowEvent e) / 窗口被打開后調(diào)用 public void windowClosing(WindowEvent e) / 窗口被關(guān)閉時調(diào)用 public void windowClosed(WindowEvent e) / 窗口被關(guān)閉后調(diào)用 public void windowIconified(WindowEvent e) / 窗口被縮小為圖標(biāo)時調(diào)用 public void windowDeic

6、onified(WindowEvent e) / 窗口被復(fù)原時調(diào)用 public void windowActivated(WindowEvent e) / 窗口激活時調(diào)用 public void windowDeactivated(WindowEvent e) / 窗口失活時調(diào)用 ,9.1.3 匿名類,例9.3 方式3:創(chuàng)建一個可關(guān)閉的空白窗口。 import java.awt.*; import java.awt.event.*; public class W3 public static void main(String args) Frame f=new Frame(Window3);

7、 f.setSize(350,200); f.setVisible(true); f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); ,9.1.4 在窗口中加入組件,例9.4 在窗口中添加按鈕,點擊“顯示”按鈕可以顯示文字,點擊“退出”按鈕可關(guān)閉窗口,同時窗口右上角的關(guān)閉按鈕也起作用。如圖所示。,import java.awt.*; import java.awt.event.*; public class W4 extends Frame imp

8、lements ActionListener Button btn1, btn2; TextField f; W4() super(Window4); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );,setSize(350,200); btn1=new Button(顯示); btn2=new Button(退出); f=new TextField(20); setLayout(new FlowLayout(); add(f); add(btn1)

9、; add(btn2); btn1.addActionListener(this); btn2.addActionListener(this); show(); ,public static void main(String args) new W4(); public void actionPerformed(ActionEvent e) f.setText(你按下了“ + e.getActionCommand() + ”按鈕); if (e.getSource()=btn2) for (int i=0; i100000000; i+); System.exit(0); ,9.1.5 多重窗

10、口,例9.5 設(shè)計一個多重窗口的程序,如圖所示。,import java.awt.*; import java.awt.event.*; public class W5 extends Frame implements ActionListener Button btn; W5() super(Window5); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );,setSize(350,200); btn=new Button(打開新窗口); set

11、Layout(new FlowLayout(); add(btn); btn.addActionListener(this); setLocation(200, 100); show(); ,public static void main(String args) new W5(); public void actionPerformed(ActionEvent e) new W5(); setLocation(getX()+20, getY()+20); toFront(); ,9.2 菜單,菜單是圖形用戶界面的重要組成部分。 由菜單條(MenuBar)、菜單(Menu)、菜單項(MenuI

12、tem)和復(fù)選菜單項(CheckboxMenuItem)等對象組成。,9.2.1 為窗口加入菜單,例9.6 在窗口中添加菜單,如圖所示。,import java.awt.*; import java.awt.event.*; public class W6 extends Frame implements ActionListener Panel p=new Panel(); Button btn=new Button(退出); MenuBar mb=new MenuBar(); / 以下生成菜單組件對象 Menu m1=new Menu(文件); MenuItem open=new Menu

13、Item(打開); MenuItem close=new MenuItem(關(guān)閉); MenuItem exit=new MenuItem(退出);,Menu m2=new Menu(編輯); MenuItem copy=new MenuItem(復(fù)制); MenuItem cut=new MenuItem(剪切); MenuItem paste=new MenuItem(粘貼); Menu m3=new Menu(幫助); MenuItem content=new MenuItem(目錄); MenuItem index=new MenuItem(索引); MenuItem about=ne

14、w MenuItem(關(guān)于);,W6() super(Window6); setSize(350,200); add(South,p); p.add(btn); btn.addActionListener(this); m1.add(open); / 將菜單項加入到菜單中 m1.add(close); m1.addSeparator(); / 將分隔條加入到菜單中 m1.add(exit); exit.addActionListener(this); / 注冊菜單項的事件監(jiān)聽器 mb.add(m1); / 將菜單加入到菜單條中,m2.add(copy); m2.add(cut); m2.add

15、(paste); mb.add(m2); m3.add(content); m3.add(index); m3.addSeparator(); m3.add(about); mb.add(m3);,setMenuBar(mb); / 顯示菜單條 show(); public static void main(String args) new W6(); public void actionPerformed(ActionEvent e) if (e.getActionCommand()=退出) System.exit(0); ,9.2.2 菜單綜合應(yīng)用,例9.7 菜單綜合應(yīng)用,如圖所示。,im

16、port java.awt.*; import java.awt.event.*; public class W7 extends Frame implements ActionListener, ItemListener TextField msg=new TextField(); MenuBar mb=new MenuBar(); Menu m1=new Menu(菜單); Menu m2=new Menu(二級菜單); MenuItem item=new MenuItem(普通菜單項, new MenuShortcut(p); CheckboxMenuItem checkbox=new

17、CheckboxMenuItem(復(fù)選菜單項); MenuItem exit=new MenuItem(退出);,W7() setTitle(菜單綜合應(yīng)用); setSize(350,200); add(msg); mb.add(m1); m1.add(m2); / 將二級菜單m2加入到m1中 checkbox.setState(true); / 設(shè)定復(fù)選菜單項為選中 m1.add(item); m1.add(checkbox); m1.addSeparator(); m1.add(exit); m2.add(菜單項); / 為二級菜單m2加入菜單項 m2.add(菜單項);,item.add

18、ActionListener(this); / 注冊事件監(jiān)聽器 checkbox.addItemListener(this); exit.addActionListener(this); setMenuBar(mb); / 顯示菜單 show(); / 顯示窗口 public void actionPerformed(ActionEvent e) if (e.getSource()=exit) System.exit(0); else msg.setText(e.getActionCommand()+被打開); ,public void itemStateChanged(ItemEvent e

19、) if (e.getSource()=checkbox) if (checkbox.getState() msg.setText(checkbox.getLabel()+被選中); else msg.setText(checkbox.getLabel()+被取消); public static void main(String arg) new W7(); ,9.2.3 彈出式菜單,彈出式菜單是一種非常方便的菜單工具,它平常依附在某個容器或組件上并不顯現(xiàn)出來,當(dāng)用戶點擊鼠標(biāo)右鍵時它就會彈出來。,例9.8 彈出式菜單應(yīng)用,如圖所示。,import java.awt.*; import java

20、.awt.event.*; public class W8 extends Frame implements ActionListener, MouseListener TextArea msg=new TextArea(); PopupMenu pm=new PopupMenu(); MenuItem item1=new MenuItem(復(fù)制); MenuItem item2=new MenuItem(剪切); MenuItem item3=new MenuItem(粘貼);,W8() setTitle(彈出式菜單); setSize(350,200); addWindowListener

21、(new WindowAdapter() / 注冊窗口的事件監(jiān)聽器 public void windowClosing(WindowEvent e) System.exit(0); ); add(msg); msg.add(pm); / 將彈出式菜單加入到文本區(qū)中 pm.add(item1); pm.add(item2); pm.add(item3);,item1.addActionListener(this); item2.addActionListener(this); item3.addActionListener(this); msg.addMouseListener(this); /

22、 注冊文本區(qū)的鼠標(biāo)事件監(jiān)聽器 show(); public void actionPerformed(ActionEvent e) msg.append(你選擇了+e.getActionCommand()+n); ,public void mouseReleased(MouseEvent e) if (e.isPopupTrigger() / 判斷是否按下鼠標(biāo)右鍵 pm.show(this, e.getX(), e.getY(); / 顯示彈出式菜單 public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEve

23、nt e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public static void main(String arg) new W8(); ,9.3 對話框,對話框是GUI中很常見的窗口對象,有著廣泛的應(yīng)用。 對話框和普通窗口最大的不同就是對話框是依附在某個窗口上,一旦它所依附的窗口關(guān)閉了,對話框也要隨著關(guān)閉。,9.3.1 自定義對話框,Dialog有7個構(gòu)造方法: Dialog(Dialog owner) Dialog(Dialog owner, String title)

24、Dialog(Dialog owner, String title, boolean modal) Dialog(Frame owner) Dialog(Frame owner, boolean modal) Dialog(Frame owner, String title) Dialog(Frame owner, String title, boolean modal),9.3.2 創(chuàng)建自定義對話框?qū)嵗?例9.9 建立一個自定義對話框,如下兩 圖。,import java.awt.*; import java.awt.event.*; public class W9 extends Fram

25、e implements ActionListener int row=6, col=40; Panel p1=new Panel(), p2=new Panel(); TextArea ta=new TextArea(文本區(qū)行數(shù):+row+ 列數(shù):+col, row, col); Button exit=new Button(退出), dialog=new Button(對話框);,W9() setTitle(對話框的父窗口); setSize(350,200); add(Center, p1); add(South, p2); p1.add(ta); p2.add(exit); p2.ad

26、d(dialog); exit.addActionListener(this); dialog.addActionListener(this); setVisible(true); ,public static void main(String args) new W9(); public void actionPerformed(ActionEvent e) if (e.getSource()=exit) System.exit(0); else MyDialog dlg=new MyDialog(this, true); dlg.show(); ,class MyDialog extend

27、s Dialog implements ActionListener Label label1=new Label(請輸入行數(shù)); Label label2=new Label(請輸入列數(shù)); TextField rows=new TextField(50); TextField columns=new TextField(50); Button OK=new Button(確定); Button Cancel=new Button(取消);,MyDialog(W9 parent, boolean modal) super(parent,modal); setTitle(自定義對話框); se

28、tSize(260,140); setResizable(false); setLayout(null); add(label1); add(label2); label1.setBounds(50,30,65,20); label2.setBounds(50,60,65,20);,add(rows); add(columns); rows.setText(Integer.toString(ta.getRows(); columns.setText(Integer.toString(ta.getColumns(); rows.setBounds(120,30,90,20); columns.s

29、etBounds(120,60,90,20); add(OK); add(Cancel); OK.setBounds(60,100,60,25); Cancel.setBounds(140,100,60,25); OK.addActionListener(this); Cancel.addActionListener(this); ,public void actionPerformed(ActionEvent e) if(e.getSource()=OK) int row=Integer.parseInt(rows.getText(); int col=Integer.parseInt(co

30、lumns.getText(); ta.setRows(row); ta.setColumns(col); ta.setText(文本區(qū)行數(shù):+row+ 列數(shù):+col); dispose(); ,9.4 Swing簡介,Swing 的功能: Swing按鈕類和標(biāo)簽類除了顯示文本標(biāo)題外還可以顯示圖像標(biāo)題。 可以為Swing容器加上邊框。 Swing組件能自動適應(yīng)操作系統(tǒng)的外觀,而AWT組件總是保持相同外觀。 Swing組件不一定非得是矩形的,可以把按鈕設(shè)計成圓形。 可以調(diào)用Swing組件的方法改變其外觀和行為。,9.4.1 Swing按鈕與標(biāo)簽,例9.10 圖像按鈕與圖像標(biāo)簽應(yīng)用,如圖所示。,

31、import javax.swing.*; import java.awt.*; import java.awt.Color; public class W11 extends JApplet Container pane; JPanel panel1,panel2; JButton button1,button2,button3; JLabel label;,public void init() pane=getContentPane(); panel1=new JPanel(new FlowLayout(); panel2=new JPanel(new FlowLayout(); Imag

32、eIcon icon = new ImageIcon(PreviousArrow.gif, ); button1=new JButton(icon); button2=new JButton(new ImageIcon(image/go.GIF); button3=new JButton(new ImageIcon(NextArrow.gif); label=new JLabel(圖像標(biāo)簽, new ImageIcon(Candl02.gif),SwingConstants.CENTER);,pane.setBackground(new Color(255,255,204); panel1.s

33、etBackground(new Color(255,255,204); panel2.setBackground(new Color(255,255,204); button1.setToolTipText(向上翻頁按鈕); button2.setToolTipText(跳轉(zhuǎn)按鈕); button3.setToolTipText(向下翻頁按鈕);,pane.add(panel1,BorderLayout.NORTH); pane.add(panel2,BorderLayout.SOUTH); panel1.add(button1); panel1.add(button2); panel1.a

34、dd(button3); panel2.add(label); ,9.4.2 Swing工具欄,例9.11 工具欄與文本區(qū)應(yīng)用,如圖所示。,import javax.swing.*; import java.awt.*; import java.awt.event.*; public class W12 extends JFrame implements ActionListener JButton button1,button2,button3; JToolBar toolBar; JTextArea textArea; JScrollPane scrollPane; JPanel panel; public W12() super(工具欄按鈕); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );,button1=new JButton(new ImageIcon(left.gif); but

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論