荷甲直播免费观看直播在线_丰满的继牳3中文字幕系列免费_久久婷婷激情精品综合_有码 无码 中文字幕 丝袜_国内外成人激情视频_亚洲乱码中文字幕234_韩国理论福利片午夜_亚洲一区二区三区高清精油按摩_日本韩国欧美三级在线_在线Ⅴ片免费观看视频

知ing

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

邵麗萍,邵光亞,張后揚 編 / 清華大學出版社

拼命菇?jīng)鯜 上傳

查看本書

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

void
例:import java.awt.*;
  import java.awt.event.*;
  class Frame1 extends Frame{
  public Frame1(){
//窗口構造函數(shù),此例沒有調(diào)用父類構造函數(shù)而是直接在子類中設置窗口屬性
    Label l=new Label("HI"); //定義窗口中的標簽
    this.add(l); //在窗口中顯示標簽
    this.setSize(new Dimension(400,300)); //設置窗口大小
    this.setTitle("My sceond Frame"); //設置窗口標題  }}
  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)用父類構造函數(shù)創(chuàng)建標題為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生成的小應用程序中不能加入菜單,必須先創(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。因為在其中所發(fā)生的各種事件,將會自動由菜單項處理。
  2.菜單(Menu)
  Menu類提供了標準下拉菜單,它可以被添加到菜單條中或其他菜單中
  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);//在界面上設置幫助菜單
  fr.setSize(150,100);
  fr.setVisible(true);
  3.菜單項(MenuItem)
  菜單項是菜單樹的“文本葉子”
  Menu m1=new Menu(“File”);
  MenuItem mi1=new MenuItem(“Save”); //創(chuàng)建“Save”的菜單項
  MenuItem mi2=new MenuItem(“Load”);
  MenuItem mi3=new MenuItem(“Quit”);
  m1.add(mi1); m1.add(mi2);
  m1.addSeparator( ); // 添加一條分隔線
  m1.add(mi3);
  4.復選框菜單項(CheckboxMenuItem)
  Menu m1=new Menu(“File”);
  MenuItem mi1=new MenuItem(“Save”);
  CheckboxMenuItem mi2=new CheckboxMenuItem (“Load”);
                   //帶復選框的菜單項
  m1.add(mi1); m1.add(mi2);
  CheckboxMenuItem可以通過ItemListener接口進行監(jiān)聽,當復選框狀態(tài)發(fā)生變化后,itemStateChanged()方法將被調(diào)用
  5.彈出式菜單項(PopupMenu)
  彈出式菜單可以在任一組件上彈郵,同時也可以在彈出式菜單中添加菜單項和菜單。彈出式菜單必須被添加到某一“父”組件上
  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ā)裝置,點擊按鈕就彈出該PopuMenu
  public void actionPerformend(ActionEvent e){
  p.show(b,10,10);}
  菜單總結:
  第一步:定義菜單欄MenuBar類的對象:
      MenuBar 對象名=new MenuBar( );
  第二步:定義菜單Menu類的對象:
      Menu 對象名=new Menu(“菜單名”);
  第三步:定義菜單項MenuIttem類的對象:
      MenuItem 對象名=new MenuItem(“菜單項名”);
      或定義選項子菜單CheckboxMenuItem類的對象:
    CheckboxMenuItem 對象名=new CheckboxMenuItem(“選項名”);
  第四步:在Frame中加入菜單欄:
      Freme類對象名.setMenuBar(“MenuBar類對象名”);
  第五步:在MenuBar中加入菜單:
      MenuBar類對象名.add(“Menu類對象名”);
  第六步:在Menu類的對象中加入菜單項:
      Menu類對象名.add(“MenuItem類對象名”);
      或Menu類對象名.add(“CheckboxMenuItem類對象名”);
MenuBar類的常用成員方法:
public void  MenuBar( ):構造一個菜單欄
public Menu add(Menu m):將指定的菜單加入菜單欄
public void remove(int index):刪除指定位置上的菜單
public void remove(MenuComonent):刪除指定的菜單
Menu類的常用成員方法:
public void Menu():構造一個菜單
public void Menu(String label):以指定標簽構造一個菜單
public MenuItem add(MenuItem  mi):增加一個菜單項
public void add(String label):與add(new MenuItem(label))等價
public void remove(int index):刪除指定位置上的菜單項
public void remove(MenuComponent mc):刪除指定的菜單項
public void removeAll():刪除所有的菜單項
public void insert(MenuItem mi,int index):在指定位置處插入一菜單項
public void insert(String label,int index):在指定位置處插入一菜單項
public void insertSeparator(int index):在指定位置處插入一分隔符
MenuItem類的常用成員方法:
public void MenuItem( ):構造一個菜單項
public void MenuItem(String label):以指定標簽構造一個菜單項
public void MenuItem(String label,MenuShortcut s):以指定標簽和快捷鍵構造一個菜單項 
public void setLabel(String Label):設置菜單項標簽
public void setShortcut(MenuShortcut s):設置快捷鍵
setActionCommand(String command):設置由菜單項引發(fā)的動作事件的命令字符串,命令字符串的默認值為菜單項的標簽
getActionCommnad():取得事件源的命令字符串
deleteShorcut():刪除與該菜單項相關的快捷鍵
setEnabled(boolean b):設置菜單項是否可選
例:
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)),
                     //設置快捷方法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構造方法:  
Dialog(Frame owner):在指定Frame中構造一無標題的、無模式的對話框
Dialog(Frame owner,boolean model):在指定Frame中構造一無標題的對話框,當model為true時有模式(必須先處理對話框),model為false時無模式
Dialog(Frame owner,String title,boolean model):標題為title,其他同上
Dialog(Dialog owner):在指定Dialog中構造一無標題的、無模式的對話框
Dialog(Dialog owner,boolean model):
Dialog(Dialog owner,String title,boolean model):
常用成員方法:
public void setTitle(String title):設置標題
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);}  //可關閉窗口
    });
    Dialog d=new Dialog(f,"HI",false);
    d.setSize(100,150);
    d.show();   }}
9.4 Swing簡介
  Swing和AWT的最大差別在于Swing組件類不帶本地代碼,因此不受操作系統(tǒng)平臺的限制,具有比AWT組件更強的功能。
> Swing按鈕類和標簽類除了顯示文本標題外還可以顯示圖像標題
> 可以為Swing容器加上邊框
> Swing組件能自動適應操作系統(tǒng)的外觀,而AWT組件總是保持相同外觀
> Swing組件不一定非得是矩形的,可以把按鈕設計成圓形
> 可以調(diào)用Swing組件的方法心跡其外觀和行為
> 增加了一個豐富的高層構件集合,如表格(JTable)、樹(JTree)
缺點:慢
特點:
> 類的屬性被命名為xxx,則相應的的方法命名為:getXxx()、setXxx()、isXxx()
> Swing使用同AWT相同的事件模型。處理Swing中的事件時除了使用java.awt.event包外,還要用到javax.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按鈕與標簽
  1.按鈕(JButton)
構造方法:
Jbutton():構造一個沒有標簽和圖標的按鈕
Jbutton(Icon icon):構造一個帶有圖標的按鈕
Jbutton(Sting text):構造一個帶有標簽的按鈕
Jbutton(Sting text,Icon icon):構造一個帶有標簽和圖標的按鈕
主要成員方法:
public boolean isDefaultButton():返回這個按鈕是否為RootPane的默認按鈕
setIcon(Icon icon):設置按鈕圖標
setDisableIcon(Icon icon):設置按鈕不激活時顯示圖標
setRolloverIcon(Icon icon):設置鼠標移到按鈕上的圖標
setPressedIcon(Icon icon):設置鼠標按下的圖標
  2.標簽(JLabel)
構造方法:
JLabel(Icon icon):構造一個帶圖片的標簽
JLabel(Icon icon,int horizontalAlignment):構造一個帶圖片且水平對齊的標簽
JLabel(String text):構造一個帶文本的標簽
JLabel(String text,int horizontalAlignment):構造一個帶文本且水平對齊的標簽
JLabel(String text, Icon icon ,int horizontalAlignment):構造一個帶文本圖片且水平對齊的標簽
主要成員方法:
getIcon():獲取JLabel顯示的圖像對象
setIcon(Icon icon):設置需要顯示的圖像
getText():返回Jlabel標簽顯示的字符串
setText(String text):設置需要顯示的字符串
getHorizontalAlignment():返回沿X軸的標簽內(nèi)容的對齊方式
setHorizontalAlignment():設置沿X軸的標簽內(nèi)容的對齊方式
getVerticalAlignment():返回沿Y軸的標簽內(nèi)容的對齊方式
setVerticalAlignment():設置沿Y軸的標簽內(nèi)容的對齊方式
9.4.2 Swing工具欄(JToolBar)
  作為一個容器來包容任何組件,它支持拖運
構造方法:
JToolBar():構造一個工具欄
JToolBar(int orientation):構造一個指定方向的工具欄
主要成員方法:
addSeparator():在JToolBar的末尾增加一個分割符
addSeparator(Dimension size):在JtoolBar的末尾增加一個指定寬度分割符
getComponentAtIndex(int i):返回指定索引的組件
getComponentAtIndex(Component c):返回指定組件的索引
getOrientation():返回工具欄的方向
setOrientation(int o):設置工具欄的方向
remove(Component comp):從工具欄中刪除組件
setBorderPainted(boolean b):設置邊界是否可被畫

查看更多