国产最新a级毛片无码专区_综合亚洲欧美日韩久久精品_日本成年片在线观看66_一本到九九av电影_一级毛片免费网站播放_国内精品久久人无码大片_国产人成视频99在线观看_欧美不卡在线一本二本_国产亚洲电影av_可以免费看黄色软件

知ing

Java語言程序設(shè)計(第三版)

邵麗萍,邵光亞,張后揚(yáng) 編 / 清華大學(xué)出版社

拼命菇?jīng)鯜 上傳

查看本書

9.1  窗口
9.1.1  創(chuàng)建可關(guān)閉窗口
  窗口所對應(yīng)的類為java.awt.Frame,它是java.awt.Window的子類,其常用方法:
方   法
功   能
返回
類型
Frame( )
創(chuàng)建一個初始不可見的窗口
void
Frame(String title )
創(chuàng)建一個指定標(biāo)題的初始不可見的窗口
void
setMenuBar(MenuBar mb)
設(shè)置菜單欄
void
remove(MenuComponent mc)
移除菜單欄
void
setVisible(boolean b)
設(shè)置是否可見
void
setTitle(String title)
設(shè)置標(biāo)題
void
setSize(int length,int width)

void
例:import java.awt.*;
  import java.awt.event.*;
  class Frame1 extends Frame{
  public Frame1(){
//窗口構(gòu)造函數(shù),此例沒有調(diào)用父類構(gòu)造函數(shù)而是直接在子類中設(shè)置窗口屬性
    Label l=new Label("HI"); //定義窗口中的標(biāo)簽
    this.add(l); //在窗口中顯示標(biāo)簽
    this.setSize(new Dimension(400,300)); //設(shè)置窗口大小
    this.setTitle("My sceond Frame"); //設(shè)置窗口標(biāo)題  }}
  public  class SC{
   boolean packFrame=false;
   public SC(){
     Frame1 frame=new Frame1();
     frame.setVisible(true); }
  public static void main(String args[])
   {new SC();}  }
9.1.2  窗口事件適配器
  例P188
9.1.3  匿名類
  例P189
9.1.4  在窗口中加入組件
例P190 import java.awt.*;
  import java.awt.event.*;
  public class SC extends Frame implements ActionListener{
   Button btn1,btn2;
   TextField f;
   SC( ){
    super("Window4"); //調(diào)用父類構(gòu)造函數(shù)創(chuàng)建標(biāo)題為Window4窗口
    addWindowListener(new WindowAdapter(){
    public void windowsClosing(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);
  add(btn2);
  btn1.addActionListener(this);
  btn2.addActionListener(this);
  show();//  改為setVisible(true);效果一樣
}
 public static void main(String args[]){
    new SC(); }
 public void actionPerformed(ActionEvent e){
  f.setText("你按下了“"+e.getActionCommand()+"”按鈕");
 if (e.getSource()==btn2){
    for (int i=0;i<1000000000;i++);
   System.exit(0);
 }}}
注:show或setVisible方法必須位于添加組件語句之后,否則組件顯示不出來
9.1.5  多重窗口
例P192
9.2  菜單
  菜單與其他組件有所不同,無法直接將菜單添加到容器的某一位置,也無法使用布局管理器對其加以控制,菜單只能被添加到“菜單容器”中
  1.菜單條(MenuBar)
  是一個水平菜單,它只能被添加到Frame對象中,作為整個菜單樹的根基(容器),直接在由java.applet.Applet生成的小應(yīng)用程序中不能加入菜單,必須先創(chuàng)建窗口。
  說明:Swing中的菜單類全部是從Jcomponent類繼承而來的,因此可以在任何Jcontainer(包括JApplet)中放置菜單的JmenuBar,而Applet中是不能直接加入菜單的。
  Frame fr=new Frame(“菜單條示例”) ;
  MenuBar mb=new MenuBar( );
  fr.setMenuBar(mb);
  fr.setSize(150,100);
  fr.setVisible(true);
  說明:菜單條(MenuBar)不支持Listener。因?yàn)樵谄渲兴l(fā)生的各種事件,將會自動由菜單項(xiàng)處理。
  2.菜單(Menu)
  Menu類提供了標(biāo)準(zhǔn)下拉菜單,它可以被添加到菜單條中或其他菜單中
  Frame fr=new Frame(“菜單條示例”) ;
  MenuBar mb=new MenuBar( );
  fr.setMenuBar(mb);
  Menu m1=new Menu(“File”);
  Menu m2=new Menu(“Edit”);
  Menu m3=new Menu(“Help”);
  mb.add(m1); mb.add(m2);
  mb.setHelpMenu(m3);//在界面上設(shè)置幫助菜單
  fr.setSize(150,100);
  fr.setVisible(true);
  3.菜單項(xiàng)(MenuItem)
  菜單項(xiàng)是菜單樹的“文本葉子”
  Menu m1=new Menu(“File”);
  MenuItem mi1=new MenuItem(“Save”); //創(chuàng)建“Save”的菜單項(xiàng)
  MenuItem mi2=new MenuItem(“Load”);
  MenuItem mi3=new MenuItem(“Quit”);
  m1.add(mi1); m1.add(mi2);
  m1.addSeparator( ); // 添加一條分隔線
  m1.add(mi3);
  4.復(fù)選框菜單項(xiàng)(CheckboxMenuItem)
  Menu m1=new Menu(“File”);
  MenuItem mi1=new MenuItem(“Save”);
  CheckboxMenuItem mi2=new CheckboxMenuItem (“Load”);
                   //帶復(fù)選框的菜單項(xiàng)
  m1.add(mi1); m1.add(mi2);
  CheckboxMenuItem可以通過ItemListener接口進(jìn)行監(jiān)聽,當(dāng)復(fù)選框狀態(tài)發(fā)生變化后,itemStateChanged()方法將被調(diào)用
  5.彈出式菜單項(xiàng)(PopupMenu)
  彈出式菜單可以在任一組件上彈郵,同時也可以在彈出式菜單中添加菜單項(xiàng)和菜單。彈出式菜單必須被添加到某一“父”組件上
  Frame fr=new Frame("PopupMenu");
  Button b=new Button("Press Me");
  fr.add(b);
  PopupMenu p=new PoupMenu("Popup");
  MenuItem s=new MenuItem("Save");
  MenuItem l=new MenuItem("Load");
  fr.add(p);
  b.addActionListener(this);
  p.add(s); p.add(l);}
  
  如果想要顯示彈出式菜單,則需要調(diào)用show()方法,如本例使用一個按鈕作為觸發(fā)裝置,點(diǎn)擊按鈕就彈出該P(yáng)opuMenu
  public void actionPerformend(ActionEvent e){
  p.show(b,10,10);}
  菜單總結(jié):
  第一步:定義菜單欄MenuBar類的對象:
      MenuBar 對象名=new MenuBar( );
  第二步:定義菜單Menu類的對象:
      Menu 對象名=new Menu(“菜單名”);
  第三步:定義菜單項(xiàng)MenuIttem類的對象:
      MenuItem 對象名=new MenuItem(“菜單項(xiàng)名”);
      或定義選項(xiàng)子菜單CheckboxMenuItem類的對象:
    CheckboxMenuItem 對象名=new CheckboxMenuItem(“選項(xiàng)名”);
  第四步:在Frame中加入菜單欄:
      Freme類對象名.setMenuBar(“MenuBar類對象名”);
  第五步:在MenuBar中加入菜單:
      MenuBar類對象名.add(“Menu類對象名”);
  第六步:在Menu類的對象中加入菜單項(xiàng):
      Menu類對象名.add(“MenuItem類對象名”);
      或Menu類對象名.add(“CheckboxMenuItem類對象名”);
MenuBar類的常用成員方法:
public void  MenuBar( ):構(gòu)造一個菜單欄
public Menu add(Menu m):將指定的菜單加入菜單欄
public void remove(int index):刪除指定位置上的菜單
public void remove(MenuComonent):刪除指定的菜單
Menu類的常用成員方法:
public void Menu():構(gòu)造一個菜單
public void Menu(String label):以指定標(biāo)簽構(gòu)造一個菜單
public MenuItem add(MenuItem  mi):增加一個菜單項(xiàng)
public void add(String label):與add(new MenuItem(label))等價
public void remove(int index):刪除指定位置上的菜單項(xiàng)
public void remove(MenuComponent mc):刪除指定的菜單項(xiàng)
public void removeAll():刪除所有的菜單項(xiàng)
public void insert(MenuItem mi,int index):在指定位置處插入一菜單項(xiàng)
public void insert(String label,int index):在指定位置處插入一菜單項(xiàng)
public void insertSeparator(int index):在指定位置處插入一分隔符
MenuItem類的常用成員方法:
public void MenuItem( ):構(gòu)造一個菜單項(xiàng)
public void MenuItem(String label):以指定標(biāo)簽構(gòu)造一個菜單項(xiàng)
public void MenuItem(String label,MenuShortcut s):以指定標(biāo)簽和快捷鍵構(gòu)造一個菜單項(xiàng) 
public void setLabel(String Label):設(shè)置菜單項(xiàng)標(biāo)簽
public void setShortcut(MenuShortcut s):設(shè)置快捷鍵
setActionCommand(String command):設(shè)置由菜單項(xiàng)引發(fā)的動作事件的命令字符串,命令字符串的默認(rèn)值為菜單項(xiàng)的標(biāo)簽
getActionCommnad():取得事件源的命令字符串
deleteShorcut():刪除與該菜單項(xiàng)相關(guān)的快捷鍵
setEnabled(boolean b):設(shè)置菜單項(xiàng)是否可選
例:
import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class SC extends Applet{
 MyFrame f=new MyFrame("My first Frame");
 Button b1=new Button("Open");
 Button b2=new Button("Close");
 MenuBar mb1=new MenuBar();
 Menu fi=new Menu("File");
MenuItem file[]={new MenuItem("Open",new MenuShortcut(KeyEvent.VK_O)),
                     //ctrl+S 
new MenuItem("Save",new MenuShortcut(KeyEvent.VK_S)),
                     //設(shè)置快捷方法Ctrl+S 
  new MenuItem("Exit",new MenuShortcut(KeyEvent.VK_E))};
                      //Ctrl+E
 public void init(){
   add(b1);
   add(b2);
  f.setMenuBar(mb1);
  mb1.add(fi);
  for (int i=0;i<file.length;i++)
     {fi.add(file[i]);}
  b1.addActionListener(new b1L());
  b2.addActionListener(new b2L());
  f.setSize(200,300);}
 class b1L implements ActionListener{
   public void actionPerformed(ActionEvent e){
     f.setVisible(true);}}
 class b2L implements ActionListener{
   public void actionPerformed(ActionEvent e){
     f.setVisible(false);}}

class MyFrame extends Frame{
 Label L1=new Label("My Applet Frame");
  MyFrame(String s){
    super(s);
    add(L1); }}}
9.3 對話框
9.3.1 自定義對話框 
Dialog構(gòu)造方法:  
Dialog(Frame owner):在指定Frame中構(gòu)造一無標(biāo)題的、無模式的對話框
Dialog(Frame owner,boolean model):在指定Frame中構(gòu)造一無標(biāo)題的對話框,當(dāng)model為true時有模式(必須先處理對話框),model為false時無模式
Dialog(Frame owner,String title,boolean model):標(biāo)題為title,其他同上
Dialog(Dialog owner):在指定Dialog中構(gòu)造一無標(biāo)題的、無模式的對話框
Dialog(Dialog owner,boolean model):
Dialog(Dialog owner,String title,boolean model):
常用成員方法:
public void setTitle(String title):設(shè)置標(biāo)題
public void show():顯示對話框
public void hide():隱藏對話框
public void setVisible(boolean b):b為true顯示對話框,為false不顯示
例:import java.awt.*;
  import java.awt.event.*;
  class SC{
   public static void main(String abc[]){
    Frame f=new Frame("HI") ;
    f.setSize(300,200);
    f.show();
    f.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e)
        {System.exit(0);}  //可關(guān)閉窗口
    });
    Dialog d=new Dialog(f,"HI",false);
    d.setSize(100,150);
    d.show();   }}
9.4 Swing簡介
  Swing和AWT的最大差別在于Swing組件類不帶本地代碼,因此不受操作系統(tǒng)平臺的限制,具有比AWT組件更強(qiáng)的功能。
> Swing按鈕類和標(biāo)簽類除了顯示文本標(biāo)題外還可以顯示圖像標(biāo)題
> 可以為Swing容器加上邊框
> Swing組件能自動適應(yīng)操作系統(tǒng)的外觀,而AWT組件總是保持相同外觀
> Swing組件不一定非得是矩形的,可以把按鈕設(shè)計成圓形
> 可以調(diào)用Swing組件的方法心跡其外觀和行為
> 增加了一個豐富的高層構(gòu)件集合,如表格(JTable)、樹(JTree)
缺點(diǎn):慢
特點(diǎn):
> 類的屬性被命名為xxx,則相應(yīng)的的方法命名為:getXxx()、setXxx()、isXxx()
> Swing使用同AWT相同的事件模型。處理Swing中的事件時除了使用java.awt.event包外,還要用到j(luò)avax.swing.event包
> 大多數(shù)情況下在老的AWT組件前加一個“J”即為Swing組件
Swing組件的分類
> 頂層容器:包括JFrame、JApplet、JDialog、Jwindow
> 普通容器:包括JPanel、JScrollPane、JtablePane
> 特殊容器:包括JLayeredPane、JRootPane、JtoolBar
> 基本控件:JButton、JCombox、JList、JMune、JTextFiled等
> 不可編輯信息組件:如JLabel、JprogresserBar
> 可編輯信息組件:如JTextFiled、JTree、JFileChooer、JTable
9.4.1 Swing按鈕與標(biāo)簽
  1.按鈕(JButton)
構(gòu)造方法:
Jbutton():構(gòu)造一個沒有標(biāo)簽和圖標(biāo)的按鈕
Jbutton(Icon icon):構(gòu)造一個帶有圖標(biāo)的按鈕
Jbutton(Sting text):構(gòu)造一個帶有標(biāo)簽的按鈕
Jbutton(Sting text,Icon icon):構(gòu)造一個帶有標(biāo)簽和圖標(biāo)的按鈕
主要成員方法:
public boolean isDefaultButton():返回這個按鈕是否為RootPane的默認(rèn)按鈕
setIcon(Icon icon):設(shè)置按鈕圖標(biāo)
setDisableIcon(Icon icon):設(shè)置按鈕不激活時顯示圖標(biāo)
setRolloverIcon(Icon icon):設(shè)置鼠標(biāo)移到按鈕上的圖標(biāo)
setPressedIcon(Icon icon):設(shè)置鼠標(biāo)按下的圖標(biāo)
  2.標(biāo)簽(JLabel)
構(gòu)造方法:
JLabel(Icon icon):構(gòu)造一個帶圖片的標(biāo)簽
JLabel(Icon icon,int horizontalAlignment):構(gòu)造一個帶圖片且水平對齊的標(biāo)簽
JLabel(String text):構(gòu)造一個帶文本的標(biāo)簽
JLabel(String text,int horizontalAlignment):構(gòu)造一個帶文本且水平對齊的標(biāo)簽
JLabel(String text, Icon icon ,int horizontalAlignment):構(gòu)造一個帶文本圖片且水平對齊的標(biāo)簽
主要成員方法:
getIcon():獲取JLabel顯示的圖像對象
setIcon(Icon icon):設(shè)置需要顯示的圖像
getText():返回Jlabel標(biāo)簽顯示的字符串
setText(String text):設(shè)置需要顯示的字符串
getHorizontalAlignment():返回沿X軸的標(biāo)簽內(nèi)容的對齊方式
setHorizontalAlignment():設(shè)置沿X軸的標(biāo)簽內(nèi)容的對齊方式
getVerticalAlignment():返回沿Y軸的標(biāo)簽內(nèi)容的對齊方式
setVerticalAlignment():設(shè)置沿Y軸的標(biāo)簽內(nèi)容的對齊方式
9.4.2 Swing工具欄(JToolBar)
  作為一個容器來包容任何組件,它支持拖運(yùn)
構(gòu)造方法:
JToolBar():構(gòu)造一個工具欄
JToolBar(int orientation):構(gòu)造一個指定方向的工具欄
主要成員方法:
addSeparator():在JToolBar的末尾增加一個分割符
addSeparator(Dimension size):在JtoolBar的末尾增加一個指定寬度分割符
getComponentAtIndex(int i):返回指定索引的組件
getComponentAtIndex(Component c):返回指定組件的索引
getOrientation():返回工具欄的方向
setOrientation(int o):設(shè)置工具欄的方向
remove(Component comp):從工具欄中刪除組件
setBorderPainted(boolean b):設(shè)置邊界是否可被畫

查看更多