870 likes | 1.03k Views
C. ertificación en. J. AVA. Universidad Nacional de Colombia Facultad de Ingeniería Departamento de Sistemas. Components in General The Visual Components The Container Components The Menu Components. 11. COMPONENTS. Objectives.
E N D
C ertificación en J AVA Universidad Nacional de Colombia Facultad de Ingeniería Departamento de Sistemas
Components in General • The Visual Components • The Container Components • The Menu Components 11. COMPONENTS
Objectives • Components are Java's building blocks for creating • graphical user interfaces. Some component types, • such as buttons and scroll bars, are used directly • for GUI control. Other kinds of components (those • that inherit from the abstract Container class) provide • spatial organization • GUIs are an important part of any program. Java's • Toolkit (AWT) provides extensive functionality. • This chapter reviews components
Components in General Java's components are implemented by the many subclasses of the java.awt.Component and java.awt.MenuComponent superclasses There are 19 non-superclass components in all, and you should know the basics of all the component classes
One way to organize this fairly large number of classes is to divide them into categories: • Visual components • Container components • Menu components
There are several methods that are implemented by all the visual and container components, by virtue of inheritance from java.awt.Component (The menu components extend from java.awt.MenuComponent, so they do not inherit the same superclass functionality) getSize() returns the size of a component The return type is Dimension, which has public data members height and width
setForeground() and setBackground(): set the foreground and background colors of a component Each method takes a single argument, which is an instance of java.awt.Color Chapter 12 discusses how to use the Color class. Generally the foreground color of a component is used for rendering text, and the background color is used for rendering the non-textual area of the component
Example: a label blue foreground color and black background color will show up as blue text on a black background
setFont(): The setFont() method determines the font that a component will use for rendering any text that it needs to display The method takes a single argument, which is an instance of java.awt.Font
If you do not explicitly set a component's font, the component uses the font of its container, in the same way that the container's foreground and background colors are used if you do not explicitly call setForeground() or setBackground() Thus, if you have an applet whose font is 48-point bold Serif, and you add a check box to the applet without calling setFont() on the check box, you will get a check box whose label appears in 48-point bold Serif
setEnabled(): takes a single argument of type boolean If this argument is true, then the component has its normal appearance If the argument is false, then the component is grayed out and does not respond to user input This method replaces the 1.0 methods enable() and disable(), which are deprecated
setSize() and setBounds(): set a component's geometry, or rather, they attempt to set geometry. They replace the deprecated 1.0 methods resize() and reshape() setSize(): takes two int arguments: width and height an overloaded form takes a single dimension setBounds(): takes four int arguments: x, y, width, and height; an overloaded form takes a single rectangle
If you have tried calling these methods, you know that it is usually futile: the size and position that you attempt to give a component is overruled by a layout manager In fact, these two methods exist mostly for the use of layout managers The major exception to this rule is the Frame class, which is not under the thumb of a layout manager and is perfectly willing to have you set its size or bounds
setVisible(): takes a boolean argument that dictates whether the component is to be seen on the screen it only works for frames, unless you learn some techniques that are beyond the scope the Certification Exam
The Visual Components • Button • Canvas • Checkbox • Choice • FileDialog • Label • List • ScrollPane • Scrollbar • TextArea • TextField
To use one of the components in a GUI: • create an instance by calling the appropriate constructor • 2. add the component to a container
Button implements a push button new Button( "Apply" ); This constructor takes a string parameter that specifies the text of the button's label When a button is pushed, it sends an Action event
Canvas It is a component that has no default appearance or behavior You can subclass Canvas to create custom drawing regions, work areas, components, and so on Canvases receive input events from the mouse and the keyboard; it is up to the programmer to transform those inputs into a meaningful look and feel
The default size of a canvas is uselessly small One way to deal with this problem is to use a layout manager that will resize the canvas Another way is to call setSize() on the canvas yourself; canvases are a rare case where this will actually work
Canvas canv = new Canvas(); • canv.setBackground( Color.black ); • canv.setSize( 100, 50 ); Applet Viewer: Visual.class
Checkbox A check box is a two-state button The two states are true (checked) and false (not checked) Checkbox( String label ) Checkbox( String label, boolean initialState )
Applet Viewer: Visual.class Use secure server
If you do not specify an initial state, the default is false Two methods support reading and setting the state of a check box: boolean getState() void setState( boolean state )
CheckboxGroup cbg = new CheckboxGroup(); • add( new Checkbox( "Cinnamon", false, cbg ) ); • add( new Checkbox( "Nutmeg", false, cbg ) ); • add( new Checkbox( "All spice", true, cbg ) ); Applet Viewer: Visual.class Cinnamon Nutmeg Allspice
Two methods support reading and setting the currently selected member of the group Checkbox getSelectedCheckbox() void setSelectedCheckbox (Checkbox newSelection) Check boxes send Item events when they are selected
Choice A choice is a pull-down list • To create a choice: • call the constructor, • populate the choice by repeatedly calling addltem()
Next figure shows two choices, both of which present the same options The choice on the left is in its normal state; the choice on the right has been mouse-clicked
Choice ch = new Choice(); • ch.addltem( "Alligators" ); • ch.addltem( "Crocodiles" ); • ch.addItem( "Gila Monsters" ); • ch.addltem( "Dragons" ); Applet Viewer: Visual.class Gila Monsters 0 Alligators0 Alligators Crocodiles Gila Monsters Dragons Applet started.
FileDialog The FileDialog class represents a file open or file save dialog The appearance of these dialogs varies greatly from platform to platform A file dialog is modal; this means that input from the dialog's parent frame will be directed exclusively to the dialog, as long as the dialog remains visible on the screen The dialog is automatically removed when the user specifies a file or clicks the Cancel button
The most useful FileDialog constructor FileDialog(Frame parent, String title, int mode) The dialog's parent is the frame over which the dialog will appear The title string appears in the dialog's title bar (on most platforms) • The mode should be • FileDialog.LOAD or • FileDialog.SAVE
After the user has specified a file, the name of the file or its directory can be retrieved: String getFile() String getDirectory()
FileDialog fidi = new FileDialog( f, "Choose!", FileDialog.LOAD ); • fidi.setVisible( true ); • System.out.println( fidi.getFile() );
Label The simplest AWT component Labels do notrespond to user input, and they do not send out any events Constructors: • Label() • Label( String text ) • Label( String text, int alignment )
The default alignment for labels is to the left To set the alignment, use the third form of the constructor and pass in one of the following: • Label.LEFT • • Label.CENTER • • Label.RIGHT
Two methods support reading and setting the text of a label: String getText() void setText( String newText )
new Label( "I'm a label, Mabel" ); Applet Viewer: Visual.class I'm a label, Mabel Applet started.
List A list is a collection of text items, arranged vertically If a list contains more items than it can display, it acquires a vertical scroll bar Constructors: • List() • List( int nVisibleRows ) • List( int nVisibleRows, boolean bMultiSelectOk )
The number of visible rows (parameter nVisibleRows) dictates the height of a list The first version of the constructor does not specify a number of visible rows, so presumably the height of such list will be dictated by a layout manager
If the version of the third constructor is used and multiSelectOk is true, then the list supports multiple selection If multiple selection is not enabled, then selecting a new item causes the old selected item to be deselected
List list = new List( 4, true ); • list.addltem( "Augustus" ); • list. addltem( "Tiberius" ); • list.addltem( "Caligula" ); • list.addltem( "Claudius" ); • list.addltem( "Nero" ); • list.addltem( "Otho" ); • list.addItem( "Galba" ); Applet Viewer: Vi... Claudius Nero Otho Galba Applet started.
The List class provides a large number of support methods • void addItem( String text ): • adds an item to the bottom of the list • void addItem( String text, int index ): • inserts an item at the specified index • String getltem( int index ): • returns the item with the specified index • int getltemCount(): • returns the number of items in the list • int getRows(): • returns the number of visible lines in the list
int getSelectedlndex(): • returns the index of the currently selected item (the list should be in single-selection mode) • int[] getSelectedlndexes(): • returns an array containing the index of every currently selected item (the list should be in multiple-selection mode) • String getSelectedltem(): • returns a string that reflects the currently selected item (the list should be in single-selection mode) • String[] getSelectedltems(): returns an array containing a string for every currently selected item (the list should be in multiple-selection mode)
ScrollPane It was introduced in Java 1.1 A scroll pane can contain a single component, which may be taller or wider than the scroll pane itself If the contained component is larger than the scroll pane, then the default behavior of the scroll pane is to acquire horizontal and/or vertical scroll bars as needed
Constructors: • ScrollPane(): • constructs a scroll pane with default scroll • bar behavior • ScrollPane( int scrollbarPolicy ): • constructs a scroll pane with the specified • scroll bar behavior
If you use the second form of the constructor, then scrollbarPolicy should be one of: • ScrollPane.SCROLLBARS_AS_NEEDED • ScrollPane.SCROLLBARS_ALWAYS • ScrollPane.SCROLLBARS_NEVER
ScrollPane spane = new ScrollPane(); • Button bigButton = new Button( "What big teeth you have, Grandmother" ); • bigButton.setFont( new Font( "Serif", Font.ITALIC, 80 ) ); • spane.add( bigButton ); Applet Viewer: Visual class Applet What big teeth y Otho Applet started.
Scrollbar The scroll bar component that adjusts lists and scroll panes is available as a component in its own right
Constructors: 1. Scrollbar(): constructs a vertical scroll bar 2. Scrollbar( int orientation ): constructs a scroll bar with the specified orientation 3. Scrollbar( int orientation, int initialValue, int sliderSize, int minValue, int maxValue ): constructs a scroll bar with the specified parameters