giáo trình Java By Example phần 3 pot

57 353 0
giáo trình Java By Example phần 3 pot

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MenuBar menuBar = new MenuBar( ); As you can see, the MenuBar( ) constructor requires no arguments. After you've created the MenuBar object, you have to tell Java to associate the menu bar with the frame window. You do this by calling the window's setMenuBar( ) method: setMenuBar(menuBar); At this point, you have an empty menu bar associated with the window. In the next steps, you add menus to the menu bar. Adding Menus to a Menu Bar A menu bar is the horizontal area near the top of a window that contains the names of the menus contained in the menu bar. After creating and setting the MenuBar object, you have the menu bar, but it contains no menus. To add these menus, you first create objects of the Menu class for each menu you want in the menu bar, like this: Menu fileMenu = new Menu("File"); Menu editMenu = new Menu("Edit"); Menu optionMenu = new Menu("Options"); The Menu class's constructor takes a single argument, which is the string that'll appear as the menu's name on the menu bar. The example lines above create three menus for the menu bar. After creating the Menu objects, you have to add them to the menu bar, which you do by calling the MenuBar object's add( ) method, like this: menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(optionMenu); After Java executes the above three lines, you have a menu bar with three menus, as shown in Figure 23.4. Note, however, that at this point the menus contain no commands. If you were to click on the menu http://www.ngohaianh.info names, no pop-up menus would appear. Figure 23.4 : This window's menu bar contains three empty menus. Adding Menu Items to Menus You may have empty menus at this point, but you're about to remedy that problem. To add items to your menus, you first create objects of the MenuItem or CheckboxMenuItem classes for each menu item you need. To add items to the Options menus you made previously, you might use Java code something like this: MenuItem option1 = new MenuItem("Option 1"); MenuItem option2 = new MenuItem("Option 2"); MenuItem option3 = new MenuItem("Option 3"); The MenuItem constructor takes as its single argument the string that'll be displayed in the menu for this item. If you're thinking that, after you create the menu items, you must call the appropriate Menu object's add( ) method, you're be exactly right. Those lines might look like this: optionMenu.add(option1); optionMenu.add(option2); optionMenu.add(option3); Now, when you display the frame window sporting the menu bar you've just created, you'll see that the Options menu contains a number of selections from which the user can choose, as shown in Figure 23.5. Figure 23.5 : Now the Options menu contains menu items. TIP Sometimes, you may have several groups of related commands that you'd like to place under a single menu. You can separate these command groups by using menu separators, which appear as horizontal lines in a pop-up menu. To create a menu separator, just create a regular MenuItem object with a string of "-". That is, the string should contain a single hyphen. http://www.ngohaianh.info Example: Using a Menu Bar in a Frame Window Now that you have this menu bar business mastered, it's time to put what you've learned to work. Listing 23.4 is an applet called MenuBarApplet. This applet displays a single button, which, when selected, displays a frame window with a menu bar. This menu bar contains a single menu with three items. The first two items are regular MenuItem objects. The third item is CheckboxMenuItem, which is a menu item that can display a check mark. Figure 23.6 shows MenuBarApplet with its frame window displayed and the Test menu visible. (Notice the menu separator above the checked item.) Figure 23.6 : This is MenuBarApplet's frame window and menu bar. Listing 23.4 MenuBarApplet.java: An Applet That Uses a Menu Bar. import java.awt.*; import java.applet.*; public class MenuBarApplet extends Applet { MenuBarFrame frame; Button button; public void init() { frame = new MenuBarFrame("MenuBar Window"); button = new Button("Show Window"); add(button); } http://www.ngohaianh.info public boolean action(Event evt, Object arg) { boolean visible = frame.isShowing(); if (visible) { frame.hide(); button.setLabel("Show Window"); } else { frame.show(); button.setLabel("Hide Window"); } return true; } } class MenuBarFrame extends Frame { MenuBar menuBar; String str; http://www.ngohaianh.info MenuBarFrame(String title) { super(title); menuBar = new MenuBar(); setMenuBar(menuBar); Menu menu = new Menu("Test"); menuBar.add(menu); MenuItem item = new MenuItem("Command 1"); menu.add(item); item = new MenuItem("Command 2"); menu.add(item); item = new MenuItem("-"); menu.add(item); CheckboxMenuItem checkItem = new CheckboxMenuItem("Check"); menu.add(checkItem); str = ""; Font font = new Font("TimesRoman", Font.BOLD, 20); http://www.ngohaianh.info setFont(font); } public void paint(Graphics g) { resize(300, 250); g.drawString(str, 20, 100); } public boolean action(Event evt, Object arg) { if (evt.target instanceof MenuItem) { if (arg == "Command 1") str = "You selected Command 1"; else if (arg == "Command 2") str = "You selected Command 2"; else if (arg == "Check") str = "You selected the Check item"; repaint(); return true; http://www.ngohaianh.info } else return false; } } Tell Java that the applet uses the classes in the awt package. Tell Java that the applet uses the classes in the applet package. Derive the MenuBarApplet class from Java's Applet class. Declare the custom frame-window and button objects. Override the init( ) method. Create the custom frame window. Create and add the button component. Override the action( ) method. Determine whether the window is visible. If the window is visible Hide the window. Change the button's label to "Show Window." Else if the window is hidden Show the window. Change the button's label to "Hide Window." Tell Java that the message was handled okay. Derive the MenuBarFrame class from Java's Frame class. Declare the class's menu bar and string objects. Define the class's constructor. Pass the title string on to the Frame class. Create and set the menu bar. Create and add the Test menu. Create and add two regular menu items. Create and add a menu separator. Create and add a checkmark menu item. Initialize the class's display string and font. Override the window's paint( ) method. Resize the window. Show the display string in the window. Override the action( ) method. if a menu item was selected Respond to the selected menu. Repaint the window, so the new string is displayed. http://www.ngohaianh.info Return true if the message was handled. Or else return false so Java knows the event is unhandled. NOTE To determine the state (checked or unchecked) of a CheckboxMenuItem object, you can call its getState( ) method. This method returns true if the item is checked and false if the item is unchecked. In addition, you can set the item's state by calling its setState( ) method. As you can see from MenuBarApplet's source code, you respond to menu-item selections in the same way you respond to other events in applets. This time, however, you have overridden two action( ) methods. The first is in the MenuBarApplet class and handles the applet's single button. The second overridden action( ) method, which is the one that handles the menu items, is in the MenuBarFrame class. Summary Although it's an ability you may not frequently take advantage of, Java applets can display windows. The Frame class makes this possible, by providing the functionality for frame windows, which can be sized, moved, used to display components, and much more. A frame window can, in fact, even have a full-featured menu bar, just like the menu bars you see in many Windows applications. Creating a menu bar, however, requires knowing how to create and manipulate MenuBar, Menu, MenuItem, and CheckboxMenuItem objects. Luckily, you learned about those classes in this chapter, so you're all ready to amaze the world with your Java frame windows. Review Questions How do you create a frame window?1. How do you display a frame window after you create it?2. How can you determine whether a frame window is currently visible?3. What's the difference between MenuItem and CheckboxMenuItem objects?4. Which Java class must you extend to create a custom frame-window class?5. How do you ensure that a custom frame-window class has properly initialized its superclass?6. How do you draw text or graphics in a frame window?7. What are the six steps that must be completed in order to add a menu bar to a frame window?8. How do you add components, such as controls, to a frame window?9. How do you respond to selected menu items?10. How do you create a menu separator object?11. http://www.ngohaianh.info Review Exercises Write an applet that displays a frame window as soon as the applet runs.1. Write an applet that displays a frame window containing a 2x2 grid of buttons.2. Modify the applet you wrote in exercise 2 so that the frame window contains a menu bar with two menus. Each menu should have a single menu item. 3. Modify the MenuBarApplet so that the menu bar has an additional menu called View. This menu should contain a single checkmarked option called Window that determines whether a second frame window is visible on the screen. When the user selects the Window command, the command should be checkmarked and the second window should appear. When the user clicks this command a second time, the second window should disappear and the command should be unchecked. Figure 23.7 shows the resultant applet in action. (You can find the solution to this exercise in the CHAP23 folder of this book's CD-ROM.) Figure 23.7 : This is MenuFrameApplet running under Appletviewer. 4. http://www.ngohaianh.info Chapter 22 Panels and Layout Managers CONTENTS Panels Example: Creating and Using Panels❍ ● Layout Managers● The FlowLayout Manager Example: Creating a FlowLayout Manager❍ ● The GridLayout Manager Creating a GridLayout Manager❍ ● The BorderLayout Manager Creating a BorderLayout Manager❍ ● The CardLayout Manager The CardLayout Manager Methods❍ Example: Creating a CardLayout Manager❍ ● The GridBagLayout Manager Creating and Setting the GridBagLayout Manager❍ Creating and Setting a GridBagConstraints Object❍ Example: Using a GridBagLayout Manager in an Applet❍ Understanding the GridBagApplet Applet❍ ● Summary● Review Questions● Review Exercises● Up until the previous chapter, when you've added controls to your applets, you've let Java place those controls wherever it felt like it. The only way you could control positioning was by changing the size of the applet. Obviously, if you're going to produce attractive applets that are organized logically, you need some way to tell Java exactly where you want things placed. Java's layout managers were created for exactly this purpose. Working in conjunction with layout managers are components called panels, which enable you to organize other applet components. In this chapter, you learn about these two important layout components. http://www.ngohaianh.info [...]... http://www.ngohaianh.info button3 = new Button("Button3"); panel.add("Button1", button1); panel.add("Button2", button2); panel.add("Button3", button3); } public boolean action(Event evt, Object arg) { cardLayout.next(panel); return true; } } Tell Java that the applet uses the classes in the awt package Tell Java that the applet uses the classes in the applet package Derive the CardApplet class from Java' s Applet class... PanelApplet .java: Using Panels import java. awt.*; import java. applet.*; public class PanelApplet extends Applet { Panel panel1, panel2; http://www.ngohaianh.info Button button1, button2, button3, button4; public void init() { panel1 = new Panel(); panel2 = new Panel(); add(panel1); add(panel2); button1 = new Button("Button1"); button2 = new Button("Button2"); button3 = new Button("Button3"); button4... manager has one row and four columns Listing 22 .3 LST22 _3. TXT: Creating a GridLayout Manager http://www.ngohaianh.info GridLayout layout = new GridLayout(2, 2, 0, 0); setLayout(layout); button1 = new Button("Button1"); button2 = new Button("Button2"); button3 = new Button("Button3"); button4 = new Button("Button4"); add(button1); add(button2); add(button3); add(button4); The BorderLayout Manager You'll... left aligned by the FlowLayout manager Figure 22 .3 : These buttons are center aligned by the FlowLayout manager Figure 22.4 : These buttons are right aligned by the FlowLayout manager Listing 22.2 LST22_2.TXT: Creating a FlowLayout Manager FlowLayout layout = new FlowLayout(FlowLayout.LEFT, 10, 10); setLayout(layout); button1 = new Button("Button1"); button2 = new Button("Button2"); button3 = new Button("Button3");... GridBagApplet .java: A GridBagLayout Applet import java. awt.*; import java. applet.*; http://www.ngohaianh.info public class GridBagApplet extends Applet { public void init() { GridBagLayout layout = new GridBagLayout(); setLayout(layout); GridBagConstraints constraints = new GridBagConstraints(); Button button1 = new Button("Button1"); Button button2 = new Button("Button2"); Button button3 = new Button("Button3");... Scrollbar and Canvas Controls CONTENTS q Scrollbars r Example: Creating a Scrollbar r Responding to a Scrollbar r Example: Using a Scrollbar in an Applet r Canvases r Example: Using a Canvas in an Applet q Summary q Review Questions q Review Exercises Next in the long list of Java controls are the scrollbar and canvas controls, which are represented by the Scrollbar and Canvas classes Using a scrollbar,... the applet in the normal way, by calling the add() method: add(panel); Example: Creating and Using Panels Using panels can be a little confusing at first, so an example is in order Suppose you need to create an applet that displays four buttons, but you don't want Java to place the buttons one after the other in the display, which Java will do with its default layout Instead, you want the buttons displayed... button4 = new Button("Button4"); panel1.add(button1); panel1.add(button2); panel2.add(button3); panel2.add(button4); } } Tell Java that the applet uses the classes in the awt package Tell Java that the applet uses the classes in the applet package http://www.ngohaianh.info Derive the PanelApplet class from Java' s Applet class Declare the panel and button objects Override the init() method Create the... layout.setConstraints(button8, constraints); add(button8); layout.setConstraints(button9, constraints); add(button9); resize (30 0, 200); } } Tell Java that the applet uses the classes in the awt package Tell Java that the applet uses the classes in the applet package Derive the GridBagApplet class from Java' s Applet class Override the init() method Create and set the layout Create the constraints object Create nine... manager You may wonder how changes to this example layout will affect the appearance of the applet Suppose, for example, you left the fill field set to its default value of GridBagConstraints.NONE You would then end up with a layout like that shown in Figure 22.12 Figure 22. 13 shows the applet with a fill setting of GridBagConstraints.VERTICAL Figure 22. 13 : The vertical fill stretches sone controls . MenuBarApplet's frame window and menu bar. Listing 23. 4 MenuBarApplet .java: An Applet That Uses a Menu Bar. import java. awt.*; import java. applet.*; public class MenuBarApplet extends Applet { . PanelApplet .java: Using Panels. import java. awt.*; import java. applet.*; public class PanelApplet extends Applet { Panel panel1, panel2; http://www.ngohaianh.info Button button1, button2, button3, button4; . button3 = new Button("Button3"); button4 = new Button("Button4"); panel1.add(button1); panel1.add(button2); panel2.add(button3); panel2.add(button4); } } Tell Java that

Ngày đăng: 22/07/2014, 16:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan