     4 

        AWT 

       (GUI) ,  , 
   . ,    
    ,       
(UI),         , , 
          .    
     ,   
World Wide Web (WWW).  WWW      
,    MTV   80- . 
     WWW-        
.        
     . 
     ,    GUI    
   . ,  
, ,       GUI,  
       ,   . 
         Windows 95, 
   Macintosh, X-Window  OS/2. 
       ,       
 ,        
-. ,    Windows,     
GUI  Macintosh. 
      Java    .  Java  
 ,     - 
    .  ,  
  Galaxy        
- ,   ;   
Coconet   GUI    ,     
   Java.  Java, ,     
 ,          ( ,  
     ). 

    107 

          AWT (Abstract Windows Toolkit), 
   GUI  Java,   ResourceWizard,  
  GUI.   GUT,    
    ,    java.awt  
,    Component.       
 Component,      AWT.     
 . 
    ResourceWizard     Java    
  ,    ,     
 RCT  RES.    ,    , 
    . 

       AVVT 

      Component  java.awt  ,  , 
,  ,  , ,  , 
  (  ),  .    
   Component.       
  . 4.1. 

    Object 
    Component 
    Label 
    Button 
    Text Component 
       Text Field 
       Text Area

    . 4.1.  ,    Component  java.awt 


    108 Visual J++:   

       Component      
     . ,   
      action()   Container, 
    .     
/          3. 

     Label 

     Label       Component. 
    ,     .  
    GUI     .  
  ,      
.     ,  , 
 ,      .  
  ,     ,   
. 

          Label   
.     Label    
 .       .  
         
. 
     getText()  setText()  Label    
 ,     Label.      
     .   
    , ,  ,   
        . 
       .  Java  ,  
   Label      . 
             
   .     ,   
-  .     3   
 ,    . 

     .     AVVT 109 

        ,     
(    ,      
  Frame): 

import  java.awt.*; 

public class MyFrame extends Frame { 
	public MyFrame(String strTitle) { 
		super (strTitle); 
		//   . 
		setLayout(new FlowLayout(FlowLayout.RIGHT, 5,10)); 
		add(new Label( "Choose Item:", Label.RIGHT )); 
		m_list = new List(); 
		add(m_list); 
		add(new Label( "Choose Color:", Label.RIGHT )); 
		m_radioWhite = new Checkbox("White"); 
		m_radioBlack = new Checkbox("Black"); 
		add(m_radioWhite); 
		add(m_radioBlack); 
	} 
	private List m_list; 
	private Checkbox m_radioWhite; 
	private Checkbox m_radioBlack; 
}

          Label   .   
 ,   ,    .  
         
public-  Label: LEFT, CENTER  RIGHT.  setAlignment() 
       . 

     Button 

            
 .    ,    Windows,  
          
.       Windows: 
Netscape Navigator, Microsoft Internet Explorer  .    . 
    Netscape Navigator 2.0,   
      . 

    110 Visual J++:   

     Button     AWT.   Button  
   ,     .  
       ,   
    (      Cancel). 
,    ,     
 Button. 
     setLabel()  getLabel()  Button,   
setText()  getText()  Label,      
 . (     :  setLabel  
getLabel         Label.) 
      4.1    Toolbar,   
 Directory Buttons   Netscape Navigator (  
 "What's new"): 

     4.1.  Navigation Toolbar 

import   java.awt.*; 

public class NavToolbar extends Panel { 
	public NavToolbar() { 
		setLayout(new FlowLayout(FlowLayout.LEFT, 3, 3); 
		add(m_buttonWhatsNew = new Button("What's New!")); 
		add(m_buttonWhatsCool = new Button("What's Cool!")); 
		add(m_buttonHandbook = new Button("Handbook")); 
		add(m_buttonNetSearch = new Button("Net Search!)); 
		add(m_buttonNetDirectory = new Button ("Net Directory!")); 
		add(m buttonSoftware = new Button("Software!"));
	}
	public boolean action(Event evt, Object arg) {
		if(m_buttonWhatsNew == evt.target) 
			getParent().postEvent(new Event(this, WHATS_NEW, null)); 
		else if(m_buttonWhatsCool == evt.target) 
			getParentO .postEvent(new Event(this, WHATS_COOL, null)); 
		else if(m_buttonHandbook == evt.target) 
			getParent().postEvent(new Event(this, HANDBOOK, null)); 


     4.     AWT 111 


		else if(m_buttonNetSearch == evt.target) 
			getParent().postEvent(new Event(this, NET_SEARCH, null)); 
		else if(m_buttonNetDirectory == evt.target) 
			getParent().postEvent(new Event(this, NET_DIRECTORY, null)); 
		else if(m_buttonSoftware == evt.target) 
			getParent().postEvent(new Event(this, SOFTWARE, null)); 
		else
			return false; ?
		return true;  ?
	}
	// Private-  , 
	private Button m_buttonWhatsNew; 
	private Button m_buttonWhatsCool; 
	private Button m_buttonHandbook; 
	private Button m_buttonNetSearch; 
	private Button m_buttonNetDirectory; 
	private Button m_buttonSoftware; 
	public static final int WHATS^_NEW = -I; 
	public static final int WHATS_COOL = -2; 
	public static final int HANDBOOK = -3; 
	public static final int NET_SEARCH = -4; 
	public static final int NET_DIRECTORY = -5; 
	public static final int SOFTWARE = -6; 
} 

       ,        
Button  ,      .  arg 
   ,    arg  Event,  
     Button. ,     
"What's Cool!"   NavToolbar,   arg  action()
 Toolbar   "What's Cool!".    
,   arg,     target  
Event,      NavToolbar.     
Button          action()   
 . 

     Checkbox 

        ,    
.          
.         
 . 
             
   .   

    112 Visual J++:   

 AWT   ,    Windows  
    . , Java-  
   ,      .  
 ,    ,   , 
  "  ". 

         ,  
        .    
,      .   
    Label  . 
          ;   
 ,    ,  "" 
.        .   
  Button,  setLabel()  getLabel()  Checkbox   
  .  getState()  setState()  Checkbox 
      true ()  false (). 
          Java   
    Checkbox     Check-boxGroup. 
 CheckboxGroup     ,      
Checkbox,          
 Checkbox: 

    CheckboxGroup group = new CheckboxGroup(); 
    Checkbox chkbxOne =	new Checkbox("One", group, false); 
    Checkbox chkbxTwo =	new Checkbox("Two", group, true); 
    Checkbox chkbxThree	= new Checkbox ("Three", group, false); 

           ,   
    axo   .      
  setState()  Checkbox,  ,   
 ,  .   CheckboxGroup 
 public- getCurrent()  setCurrent(),    
"" ,     Checkbox 
  CheckboxGroup. 

     4.     AVVT 113 

      CheckboxGroup  .  ,    
      CheckboxGroup,   
   .     
  ,       ,   . 
       ,     Checkbox  
 ,    . 

     4.2.     

	import   java.awt.*; 

	public class MyFrame extends Frame { 
		public MyFrame() { 
			setLayout(new FlowLayout(FlowLayout.RIGHT, 5, 5)); 
			add(new Label("Single-selection Checkboxes:")); 
			add(new Checkbox ("One")); 
			add(new Checkbox("Two")); 
			add(new Checkbox ("Three")); 
			add(new Label("One-of-many Checkboxes:")); 
			add(new Checkbox("First")); 
			add(new Checkbox("Second")); 
			add(new Checkbox("Third")); 
		}
	}


     Scrollbar 

      (scrollbar)     
  .    ,    
   .     
      ,  
,   .      
    ,     
   .   (    
Slow...Fast)  . 

     Scrollbar     Java-.  
  public-       
,         
. ,  SCROLL_LINE_UP   

    114 Visual J++:   

Event   ,      
 Line Up  . 
       Scrollbar    
 ,  : 
        Orientation.     ,  
.       . 
 SCROLL_LINE_UP     ,   
 .  SCROLL_LINE_DOWN     
  .       
Scrollbar.HORIZONTAL  Scrollbar.VERTICAL. 
        Value.     ,   
     . 
        Minimum.   ,     
.   (thumb)      
  ,        ,  
   . 
        Maximum.   ,     
.        
         . 
        PageSize.   .   
         
,    ,    Page Down ( 
    ),  ,   , 
   . 
        LineSize     .   
           
 Line Down     [ ], ,  
 ,    .   ,   
        setLineIncrement()  
Scrollbar,    . 
        VisibleSize.  .       
        . 
         Scrollbar    
  : 

    public Scrollbar (int orientation, int value, int visible, int minimum, 
int maximum) 

        Scrollbar     
  .     ,   
   .    
        . 

     4.     AVVT	115 

           
     ,       
 Scrollbar. ,      
    ,      
 .        setValues(): 

    public void setValues(int value, int visible, int minimum, int maximum) 

          Value, LineSize  
PageSize    : 

    setValue(int value), setLinelncrement(int line_inc), setPagelncrement(int page_inc). 

             
: getMinimum(), getMaximum(), getLinelncrement(), getPagelncrement(), 
getValue()  getVisible(). 
     ( 4.3)   ,    
   . 

     4.3. ,    

import java.awt.*;

public class ScrollbarExample extends Frame implements Runnable { 
	public ScrollbarExample() {
		super ("Scrollbar Example Application"); 
		setLayout(new BorderLayout(5, 5)); 
		m_scroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 100); 
		add("South", m_scroll); 
		m_label = new Label ("Scroll val: move scrollbar"); 
		add("Center", m_label); 
	} 
	public boolean handleEvent(Event evt) { 
		switch (evt.id) { 
			case Event.SCROLL_LINE_UP: 
			case Event.SCROLL_LINE_DOWN: 
			case Event.SCROLL_PAGE_UP: 
			case Event.SCROLL_PAGE_DOWN: 
			case Event.SCROLL_ABSOLUTE 
				updateValue (m_scroll.getValue()); 
				return true; 
		} 
    		return false; 
	} 
	private void updateValue(int val) { 
		m_label.setText("Scroll val: " + val); 
	}


    116	Visual J++:   


	// Private-, 
	private Scrollbar m_scroll = null; 
	private Label m_label = null; 
} 

      SCROLL_LINE_UP/DOWN  SCROLL_PAGE_UP/DOWN  . 
 SCROLL_ABSOLUTE ,    
    .  arg  Event   
,   . 

     TextField  TextArea 

                
       .  TextField 
       ,  TextArea     
  .   ,   
     , ,   
  ,       . 
      (TextField  TextArea)    TextComponent,  
     .   
       . 
          
 .        
 public-  TextComponent.    
       TextField  TextComponent. 
     : 
        isEditable.       . 
    ,      . 
   TextArea       
  .       
,      . 
        Text. ,    .   
 position  .   
        .  
   0,   1  . . 
        Selection Range.     -  , 
  .        
.      (  
 )     .    
    .    
     (   ).   
    . 

     4.  n   AVVT	117 

       (,  )  
  . ,    
 ,       ( ) 
   setEditable()  TextComponent.  getEditable()
,       . 
      TextComponents        
.        getText().  
setText()        . 
 getText()  setText()  Label    
 TextComponent. 
            public-  
TextComponent.   TextArea  ,   
  .   TextComponent    
      getSelectionStart()  getSelectionEnd(). 
     ,      
 .     ,   
 , ,        
.         . 
     getSelectionText()    .  select()
       ,   
     .    selectAll() 
      TextComponent. 

     TextField 

      TextField     .  TextField 
   TextComponent,       
 ,    ,  
,      .   
        ,  ,  
  .      TextField  
    . 
      TextField   .    
  ,   . 

     		   
									 

    TextField()							 
    TextField(int rows)						 
    TextField(String strText)					 
    TextField(String strText, int rows)			 


    118	Visual J++:   

           TextField   
   .       
    ,   . 
      TextField       . 
    , ,      
   .    ,   
 ,   ,     
 .        , .. 
  ,    .  
TextField     TextField     . 
,      ,  
- (echo character). 
     ~     -  
 setEchoCharacter()  TextField.  ,    
     TextField   .   
 ,     - .  
getEchoCharacter()   -.  echoCharlsSet()
,      . 
       TextField  -,  getText()  
getSelectedText()  TextComponent   
  TextField,    -.   
      -,  
     getText()     
TextField.    "" ,    
      TextField. 

     TextArea 

            .   
 TextField,  TextArea    TextComponent,   
     ,    
:  ,   ,  . 
 ,           
 .          
  .        
       .    TextArea 
    ,    TextField.  -  
 ,      ,   
      ,       
  . 
     TextArea          
,     ,    getRows()  
getColumns().  ,     , 
 . 

     4.     AVVT	119 

     TextArea        , 
     TextComponent  TextField.   
        . ,  , 
         
 ,       . 
      ,   TextArea    
 ,     TextComponent. ,  
insertText()  TextArea        
,  appendText()       , 
 replaceText()       
 . ,  getText()  setText()  TextField  
 .  ,  TextArea    
 . 
                
 ,      ,    
   ,      
    . 

     List 

       ,       
.  , ,        
    Chat-.     
     ,   
,    java.awt       
List.        . 
          . ,  
 ,      

    120 Visual J++:   

,            
 . 
        List     , 
         . 
          , 
 (  )   .  isMultipleSelect()  
List   true,       . 
 setMultipleSelect()      List  
         ,   
 . 
    Public-  List   ,     
 .   ,     ! 
    List   public- 
 ,        . 
            
         
 List.        

     			  List 

      			countltems() 
     					clear() 
        			addltem(String) 
       				addItem(String, index) 
         	replaceItem(String, index) 
       				delltem(index) 

        List ,     
  .  getRows()   ,  
  List.     ,  
       List    
,         . 
       List      
 . ,       , 
.    ,     
getSelectedlndex()  getSelectedltem()  List,     
     System.out: 

    public void displaySelection(List list) { 
	    System.out.println("Item #" + list.getSelectlndex() + 
		    ": " + list.getSelectedltem()); 
    }

     .     AVVT	121 

         .  ,  
,          System.out: 

    public void displaySelection(List list) { 
	int[] an = list.getSelectedlndexes(); 
	String[] astr = list.getSelectedltems(); 
    	for(int i=0; i<an.length; i++) 
	    System.out.println("Item #" + an[i] + :" + astr[i]);
    } 

     getSelectedlndex()  getSelectedlndexes()     ; 
      ,      
. ,  getSelectedltem()  getSelectedltems() 
 ,     . 
             
     .  select()     
.       ,     
 .  ,    ,    
     ,     
   .  ,     
 ,        . 
 deselect()          
   .  isSelected()   ,    
   . 
         , ,   
   ,      
      .     
   .  makeVisible()  
       ,    
    .    
    .   4.4   , 
  ,        . 


    122 Visual J++:   


     4.4.       

import java.awt.*; 
import java.util.*; 

public class CoordExample extends Frame { 
	public static void main(String astrArgs[]) { 
		CoordExample ce = new CoordExample(); 
		ce.show(); 
	}
	public  CoordExample ()    {	
		super("Coord  List  Example");                  
		m_list  = new List(); 
		m_vect  =   new Vector(); 
		m_vsTct.addElement ("Albert") ; 
		m_vect.addElement("Brian"); 
		m_vect.addElement("Chris"); 
		m_vect.addElement ("David") ; 
		m_vect.addElement("Edwin"); 
		m_vect.addElement("Frank"); 
		m_vect.addElement("Gershom"); 
		m_vect.addElement("Hank"); 
		m_vect.addElement("Igor"); 
		m_vect.addElement("Justin"); 

		//    . 
		Enumeration enum = m_vect.elements(); 
		while(enum.hasMoreElements()) 
			m_list.addltem((String)enum.nextElement()); 

		//    vector.    
		//  . 
		enum = m_vect.elements(); 
		while(enum.hasMoreElements()) 
			((String)enum.nextElement()).toLowerCase(); 

		//    vector . 
		//   . 
		setLayout(new BorderLayout(5, 5)); 
		add("North", m_text = new TextField()); 
		add("South", m_list); 
	}
	public boolean keyUp(Event evt, int key) ( 
		if(evt.target == m_text) { 
			int i = m_vect.indexOf(m_text.getText().toLowerCase()); 
			if (-i !+ i)
			select (i) ;
		} 
		return super.keyUp(evt, key); 
	}


     4.     AVVT 123 


	public boolean handleEvent(Event evt) {
		return false; 
	}
	//Private- . 
	private TextField m_text; 
	private List m_list; 
	private Vector m_vect; 
} 

         :     
   .      
   ,   List     
 ACTION_EVENT   .    
     ,    
     ,   
    List, LIST_SELECT.  ,  
       ,   
   LIST_SELECT,     ACTION_EVENT.  
      LIST_DESELECT. 
       ,   
    LIST_DESELECT. 

     Choice 

         .    
.       .    
    .     ,   
"" (drops down)    .    
   ,    .     ,  
    ,   .  . 4.2 
 ,   .  ,  
      . 
     Java        
Java.awt.Choice.   Choice    ,   
 .    Choice      
  .        
      . 
              , 
        
.       addltem(), getltem() 
 countltem(). ,    ,  .   
       Choice    
. 

    124	Visual J++:   


    . 4.2.     

             
,     .  getSelectedlndex()  
setSelectedItem()      List. 
     select(),    
   ,    .     
,     Choice: 

     4.5. ,     Choice 

import java.awt.*; 

public class ChoiceDemo extends Frame { 
	public static void main(String[] astrArgs) { 
		ChoiceDemo cd = new ChoiceDemo(); 
		cd.show(); 
	}

	public ChoiceDemo() { 
		super ("Choice Demonstration Program");
		Canvas canvRed = new Canvas(); 
		Canvas canvBlue = new Canvas(); 
		Canvas canvYellow = new Canvas(); 
		Canvas canvWhite = new Canvas(); 
		Canvas canvBlack = new Canvas(); 
		Canvas canvGreen = new Canvas(); 

     4.     AVVT 125 

		canvRed.setBackground(Color.red); 
		canvBlue.setBackground(Color.blue); 
		canvYellow.setBackground(Color.yellow); 
		canvWhite.setBackground(Color.white); 
		canvBlack.setBackground(Color.black); 
		canvGreen.setBackground(Color.green); 

		m_panelCanvases = new Panel(); 
		m_panelCanvases.setLayout(m_cardLayout = new CardLayout());
		m_panelCanvases.add("Red", canvRed); 
		m_panelCanvases.add("Blue", canvBlue); 
		m_panelCanvases.add("Yellow", canvYellow); 
		m_panelCanvases.add("White", canvWhite) 
		m_panelCanvases.add("Black", canvBlack) 
		m_panelCanvases.add("Green", canvGreen) 
	
		setLayout(new BorderLayout ()); 
		add("North", m_choice = new Choice ()); 
		add("Center", m_panelCanvases); 

		m_choice.addltern("Red"); 
		m_choice.addltem("Blue") ; 
		m_choice.addltem("Yellow"); 
		m_choice.addltem("White"); 
		m_choice.addltem("Black"); 
		m_choice.addltem("Green"); 
	}

	public boolean handleEvent(Event evt) { 
		if((evt.id == Event. ACTION__EVENT) && (evt. target == m__choice) ; 
			m_cardlayout.show(m_panelCanvases, (String)evt.arg); 
			return true; 
		} 
		return false; 
	}
	// Private- , 
	private Choice m_choice; 
	private Panel m_panelCanvases; 
	private CardLayout m_cardLayout; 
} 

       ,      
.       TION_EVENT.   
 target     .    
,          
  . 

    126 Visual J++:   


         ResourceWizard 

        C++,     Windows SDK  
Visual C++/MFC,  ,      
(diglog resources).   ,    
 . 
    Visual J++      Microsoft Developer Studio, 
      .  
        
.    Windows     
 .      . 4.3. 

    . 4.3.     Visual J++ 

    Visual J++       ResourceWizard, 
        Java.  
       .  . 
4.4     ,   ResourceWizard   
Dialog   ,   . 4.3.     
   Visual J++   ResourceWizard   
15 .  , 

     4.     AVVT 127 

   ResourceWizard,   Java-,  
        . 

    . 4.4.        

       Dialog,      Visual 
J++.          
 Java.        . 
             
New  File. 
       :    , 
-  ,    . 

    128 Visual 1++:   

          .  
           
 Dialog  Edit       
.       (  
      ),   
    . 
          Save  File.  
       ,   
  . ,        
 .           . 
   RCT.    "Save as type:"   
 "Resource Template (*.rct)",      
   "Resource Template." 
           Java.  
   Tools  Java ResourceWizard      
  (RCT)     (RES),   
     ,   . 
       ,   
 Next. ResourceWizard      , 
   .      
    ,      Java,  
   .     ,  
 ,    : IDD_DIALOG1.   
     Java,    . 
    ClassName    .  
   ResourceWizard     Java  
 . 4.5. 

    . 4.5.   ,    ResourceWiiard 


     4.     AVVT 129 

     ResourceWizard   ,     
,  Dialog   DialogLayout.      
Insert to Project  File.       
DialogLayout.java  <_>.java. ( DialogLayout.java  
  ,    ,      
Dialog.) 
        Dialog       
.   ,     
-.       
  CreateControls().     
 . ,      
Dialog,    ResourceWizard   MyDialog: 

	Panel p = new Panel();			//  ,       
							//   . 
	MyDialog dig = new MyDialog(p);	//          
							//  . 
	dlg.CreateControls();			//       
							//         . 


      ,  ResourceWizard 

       ,     ,  
 . 4.6.      .    
     ,   4.6   
 . 

    . 4.6.  ,    Resource Wizard 


    130 Visual J++:   


     4.6.   Dialog,    ResourceWizard 

public class MyDialog  { 
	Container m_Parent = null; 
	boolean m_fInitialized = false; 
	DialogLayout m_Layout; 

	//   . 
	// _________________________________________________________ 
	Button	IDOK; 
	Button	IDCANCEL; 
	List	m_listNames; 
	Label	m_labelNamesl; 
	Checkbox	m_chkbxReadOnly; 
	TextField	m_tfKey; 
	TextField	m_tfVal; 
	Label	m_labelKeyVal; 

	// . 
	// ________________________________________________________ 
	public MyDialog (Container parent) { 
		m_Parent = parent; 
	} 

	// . 
	// _________________________________________________________ 
	public boolean CreateControls () { 
		// CreateControls     . 
		// _____________________________________________________ 
		if (m fInitialized || m_Parent == null) 
			return false; 

		// m_Parent      Container. 
		// _____________________________________________________ 
		if (!(m_Parent instanseof Container)) 
			return false; 
		//        
		// ,      
		//  ,    . 
		// _____________________________________________________ 
		Font OldFnt = m_Parent.getFont(); 
		if (OldFnt != null) { 
			Font NewFnt = new Font(OldFnt.getNarae(), OldFnt.getStyle(),8); 
			m_Parent.setFont(NewFnt); 
		} 


     4.     AWT	131 


		//        
		//   ,  DialogLayout 
		//     . 
		// ______________________________________________________ 
		m_Layout = new DialogLayout(m_Parent, 310, 230); 
		m_Parent.setLayout(m_Layout); 
		m_Parent.addNotif(); 

		Dimension size = m_Layout.getDialogSize(); 
		Insets insets = m_Parent.insets(); 

		m_Parent.resize(insets.left = size.width + insets.right, insets top + 
			size.height + insets.bottom); 

		//   . 
		// _____________________________________________________ 
		IDOK = new Button ("OK"); 
		m_Parent.add(IDOK); 
		m_Layout.setShape{IDOK, 94, 195, 55, 18); 

		IDCANCEL = new Button ("CANCEL"); 
		m_Parent.add(IDCANCEL); 
		m_Layout.setShape(IDCANCEL, 161, 195, 55, 18); 

		m_listNames = new List (1, false); 
		m_Parent.add(m_listNames); 
		m_Layout.setShape(m_listNames, 17, 23, 271, 107); 

		m_labelNamesl = new Label ("Select Name:", Label.LEFT); 
		m_Parent.add(m_labelNamesl); 
		m_Layout.setShape(m_labelNamesl, 17, 7, 116, 12); 

		m_chkbxReadOnly = new Checkbox ("Read Only"); 
		m_Parent.add(m_chkbxReadOnly); 
		m_Layout.setShape(m_chkbxReadOnly, 19, 140, 69, 16); 

		m_chkbxHidden = new Checkbox ("Hidden"); 
		m_Parent.add(m_chkbxHidden) ; 
		m_Layout.setShape(m_chkbxHidden, 19, 158, 69, 16); 

		m_tfKey = new TextField (" "); 
		m_Parent.add(m_tfKey) ; 
		m_Layout.setShape(m_tfKey, 114, 145, 173, 16); 

		m_tfVal = new TextField (" "); 
		m_Parent.add(m_tfVal); 
		m_Layout.setShape(m_tfVal, 114, 167, 173, 15); 

		m_labelKeyVal = new Label("Key and Value", Label.LEFT); 
		m_Parent.add(m_labelKeyVal); 
		m_Layout.setShape(m_labelKeyVal, 116, 134, 115, 10); 

    132	Visual J++:   


		m_fInitialized = true; 
		return true; 
	}
}

    ,  ResourceWizard      
   Dialog.       
    .      
 ResourceWizard,       Windows 
  ,  ""  ResourceWizard  
AppletWizard  VJ++  AppWizard  VC++. 

     DialogLayout 

    ResourceWizard    Dialog    
  DialogLayout.    ,  
  Dialog,   ,       
 . 
      DialogLayout    
    ,    . 
     ,     
(dialog units).      ,  
    .      
    ,       . 
         ,     
   . ,   , 
         800x600, 
      ,   1200x800, 
  25%, ,    -. 
          DialogLayout.  
        
(dialogfont).        ,   
   ,      
 .   ,  ,   
      ,      
        .  
   1/8     ,  
  1/4   . (   ,   
  ,      ,    
    .) 
         DialogLayout.   
   (     3),    
      DialogLayout:    
     . 

     4.     AWT	133 

          (  ), 
     ,         
. ,   ,       
  .       . 
            . 
      HTML-,   
 . ,     ,  
 ,    . (, ,   
      .) 
      DialogLayout      
.    ,     ,  
   .      
  ,       .  
  ,       
DialogLayout,  ResourceWizard.     
 ,  - ,    . 

     

    ,    ,     GUI.  
 -     , , 
,   .   Java,  . 
        ,    .  
   .    

    134 Visual J++:   

      File, Edit  Help.   
   ,        
Windows,   Microsoft. 
     ,     (   
 (menu bar)),     .   
       . 4.7. 

    . 4.7.       

    ResourceWizard       .   
,        , 
  ,     . 

     Menu. Menultem  Mervubar 

     ,   Java,    
/.       
   Component.     MenuComponent. 
      java.awt.Component  MenuComponent   
,     . 
        MenuComponent    Menultem. 
   Java   . 
      AWT   Container,      
 .  Menu,    MenuComponent,  
 ,   .    Menu  
Menultem,         . 
         Menubar.    
       .    

     4.     AVVT 135 

        Frame,   
      AWT.    
    ,      ,  
  Dialog.     ,   Frame 
    ,    .  
Frame.setMenubar()         Frame. 
         . 4.8.     
File, Edit  Help. ,        , 
   4.7. 

    Menubar 
       File Menu 
          New Menu Item 
          Save Menu Item 
          Save As Menultem 
          Exit Menultem 

       Edit Menu 
         Cut Menultem 
         Copy Menultem 
         Paste Menultem 
         Clear Menultem 

       Commands Menu 
         Command 1 Menultem 
         Command 2 Menultem 
         Dialog Menultem 
         Another Command Menultem 
         Subcommands Menu 
           Subcommand 1 Menultem 
           Subcommand 2 Menultem 

       Help Menu 
         Help Menultem 
         About this App Menultem 

    . 4.8.     


    136 Visual J++:   


     4.7.    

public Menubar createMenu() { 
	Menubar mbar = new Menubar(); 

	//   File. 
	Menu menuFile = new Menu("File"); 
	menuFile.add(new MenulYem ("New...")); 
	menuFile.add(new Menultem ("Open...") ) ; 
	menuFile.add(new MenuItem("Save")); 
	menuFile.add(new Menultem ("Save As...")); 
	menuFile.add("-");  // . 
	menuFile.add(new Menultem("Exit")); 

	//   Edit. 
	Menu menuEdit = new Menu("Edit"); 
	menuEdit.add(new MenuItem("Cut")); 
	menuEdit.add(new Menultem("Copy")); 
	menuEdit.add(new Menultem("Paste")); 
	menuEdit.add(new Menultem("Clear")) ; 

	//   Commands. 
	Menu menuCommands = new Menu("Commands"); 
	menuCommands.add(new Menultem("Commandl")); 
	menuCommands.add(new Menultem("Command2")); 
	menuCommands.add("-");  // . 
	menuCommands.add (new Menultem ("Dialog Item...")); 
	menuCommands.add(new Menultem("Another Command"));
	menuCommands.add("-");  // . 

	//   Commands. 
	Menu menuSubCommands = new Menu("Subcommands"); 
	menuSubCommands.add(new Menultem("SubCommandl")); 
	menuSubCommands.add(new Menultem("SubCommand2")); 
	menuCommands.add(menuSubCommands)); 

	//   Help. 
	Menu menuHelp = new Menu("Help"); 
	menuHelp.add(new Menultem ("Help") ) ; 
	menuHelp.add("-");  // . 
	menuHelg.add(new Menultem ("About this app...")); 

	//      , 
	mbar.add(MenuFile);
	mbar.add(ftenuEdit); 
	mbar.add(MenuCommands); 
	mbar.add(MenuHelp); 

	return mbar; 
}


     .     AWT	137 


     Menu Item 

       Menultem,     , 
   : 
        Label.  ,   .   ,  
     (Open, Paste, Help).   
      .  
   ,        
   (, ,  "Open...", 
"About this application..."). 
        isEnabled. ,       . 
     .    
  . 
      Menultem       
 .        
  setLabel().  getLabel()   , 
     .  ,     
,   isEnabled().  enable()  disable()  
   . 
      Menultem      
   .     
  : 

    public Menultem(String strLabel) 

         ,   Frame 
      ACTION_EVENT.   
    ;  arg  Event  
   .   4.8     
    Frame. 

     4.8.    

public boolean action(Event evt, Object arg) { 
	if(evt.target instanceof Menultem) 
		return handleMenuAction(evt, (Menultem)evt.target, (String)arg); 
} 

public boolean handleMenuAction(Event evt, Menultem target, String strLabel) { 
	if(evt.target == m_menuitemCommandl) { 
		doCommandl(); 
		return true; 
	} e%se if(evt.target == m_menuitemCommand2) { 
		doCommand2(); 
		return true; 
	} else 
	return false;


    138	Visual J++:   


     Menu 

       Menu      
,      Menultem.       
.     Menultem,       
getLabel()  setLabel().   Menu    Menultem, 
        isEnable(), enable(), disabie(). 
              .  
,    Menu,   public,   
     ,      
.    add(),   ,    
   .     .     
    add(),      : 

    Menu menu = new Menu("Menu"); 
    menu.add("Sample Menultem");   //  Menultem   . 

      Menu,   public,     
   ,      add(). 
,     ,   
   add()  . 
     remove()   add().   -   
    .     
   ;    ,     
  0,   1  . .        
  ,     remove(): 

    Menu menu = new Menu("Menu"); 
    menu.add(new Menultem("Remove Me!"); 
    menu.remove(0) ; 

       ,      
 : 

    Menu menu = new Menu("Menu"); 
    Menultem mi = new Menultem ("Remove Me!"); 
    menu.add(mi); 
    ...
    menu.remove(mi); 


     ResourceWizard     Menu 

      ResourceWizard,       
   Dialog,       

     1.     AWT	139 

 Menu.   Visual J++    
.      Resource  Insert   
 VJ++       Menu.    
  , ResourceWizard     Menu,  
    .     , 
     .         
,    . 
           ,    
        (   
    ).    
private-      .   
     Separator. 
     ,    .      
RCT        ,   
 .        
    . ,      
 "MyMenu",      Menu     
    MyMenu.java,    MyMenu.  
   .   ,    
ResourceWizard   ,    : 

     4.9.   ,    Resource Wizard 

public class MyMenu {       
	Frame m_Frame = null; 
	boolean m_fInitialized = false; 

	//   MenuBar. 
	//___________________________________________________________ 
	MenuBar mb; 
	//   Menu  
	//			Menultem. 
	// 
	Menu ml ;	// File 
	MenuItem	m miNew;	//	New... 
	MenuItem	m miOpen;	//	Open... 
	MenuItem	m miSave;	//	Save 
	MenuItem	m miSaveAs;	//	Save As... 
	MenuIfeem	ID_FILE;	//	
	MenuItem	m miExit;	//	Exit 
	Menu m8 ;	// Edit 
	MenuItem	m miCut;	//	Cut 
	MenuItem	m mi Copy;	//	Copy 
	MenuItem	m miPaste;	//	Paste 
	MenuItem	m miClear;	//	Clear 
	Menu m13;	// Commands 
	MenuItem m_miCommand1;	//	Command1 . 


    140	Visual J++:   


	MenuItem m_miCommand2;      // Command2. 
	Menu ml6;   // Subcommands. 
	MenuItem m_miSubCommand1;   // Subcommand1. 
	MenuItem m_miSubCommand2;   // SubCommand2. 
	Menu ml9;   			// Help 
	MenuItem m_miHelp;         // Help 
	Menultem m_miAbout;        // About this Application... 

	// . 
	// ________________________________________________________ 
	public MyMenu (Frame frame) { 
		m_Frame = frame; 
	} 

	// . 
	// _________________________________________________________ 
	public boolean Create Menu() {
	//      
	//  . 
	//_______________________________ 
		if (m_fInitialized || m_Frame == null) 
			return false; 
		//       
		//    Frame. 
		//____________________________________ 
		mb = new MenuBar(); 
		m_Frame.setMenuBar(mb); 
		//         . 
		// ________________________________________________________ 
		m1 = newMenu("File"); mb.add(ml); 
		m_miNew = new Menultem ("New...") ; 
		m1.add(m_miNew); 
		m_miOpen = new Menultem ("Open...") ; 
		m1.add(m_miOpen); 
		m_miSave = new Menultem("Save"); 
		m1.add(m_miSave); 
		m_miSaveAs = new Menultem ("Save As..."); 
		mi.add(m_miSaveAs); 
		m1.add("-"); 
		m_miExit = new Menultem("Exit"); 
		m1.add(m_miExit); 
		m8 = new Menu("Edit"); 
		mb.add(m8); 
		m_miCut = new Menultem("Cut"); 
		m8.add(m_miCut); 
		m_miCopy = new Menultem("Copy"); 
		m8.add(m miCopy); 


     4.     AWT	141 


		m_miPaste = new Menultem("Paste"); 
		m8.add(m_miPaste); 
		m_miClear = new Menultem("Clear"); 
		m8.add(m_miClear); m!3 = new Menu("Commands"); 
		mb.add(m13); 
		m_miCommandl = new Menultem("Commandl"); 
		m13.add(m_miCommandl); 
		m_miCommand2 = new Menultem("Command2"); 
		ml3.add(m_miCommand2); 
		m16 = new Menu ("Subcommands"); 
		ml3.add(ml6); 
		m_miSubCommandl = new Menultem("SubCommandl"); 
		ml6.add (m__miCommandl) ; 
		m_miSubCommand2 = new Menultem("SubCommand2"); 
		ml6.add(m_miSubCommand2); 
		ml9 = new Menu("Help"); 
		mb.add(mb9); 
		m_miHelp = new Menultem("Help"); 
		ml9.add(m_miHelp); 
		m_miAbout = new Menultem ("About this Application..."); 
		ml9.add(m_miAbout); 
		m_fInitialized = true; 
		return true; 
	} 
} 

    ,         
m1, m2  . .,         
m_menuFile, mjnenuEdit  . . 
       MyMenu       
  Frame,     .    
     CreateMenu()  Menu,  
         Frame,   : 

	Frame f = new Frame(); 
	MyMenu menu = new MyMenu(f); 
	menu.CreateMenu(); 


     

       ,  ,  
  .     ,  , 
, ,    ..    
  ,      . 

    142	Visual J++:   

      java.awt    Component,   
    . ,   , 
  ,    ,    
..  java.awt   Label, Button, Scrollbar, Checkbox, 
List, Choice, TextField, TextArea. 
      Menu/Menultem,        
  Frame,    Component/Container.  
      ,  . 
         
   (isEnable  .). 
    ResourceWizard        
 .   VJ++      
       RCT   
  .  ResourceWizard     . 
 ResourceWizard    ,    
    . 
