AWT (Abstract Windowing Toolkit)
The AWT is roughly broken into three categories
Components
Layout Managers
Graphics
Many AWT components have been replaced by Swing
components
It is generally not considered a good idea to mix
Swing components and AWT components. Choose to
use one or the other.
AWT – Class Hierarchy
Panel
Button
Checkbox
Choice
Label
List
Component
Container Frame
Window
TextArea
TextField
TextComponent
Note: There are more classes, however,
these are what are covered in this chapter
Component
Component is the superclass of most of the displayable
classes defined within the AWT. Note: it is abstract.
MenuComponent is another class which is similar to
Component except it is the superclass for all GUI items
which can be displayed within a drop-down menu.
The Component class defines data and methods which
are relevant to all Components
setBounds
setSize
setLocation
setFont
setEnabled
setVisible
setForeground -- colour
setBackground -- colour
Container
Container is a subclass of Component. (ie. All containers
are themselves, Components)
Containers contain components
For a component to be placed on the screen, it must be
placed within a Container
The Container class defined all the data and methods
necessary for managing groups of Components
add
getComponent
getMaximumSize
getMinimumSize
getPreferredSize
remove
removeAll
Windows and Frames
The Window class defines a top-level Window with no
Borders or Menu bar.
Usually used for application splash screens
• Frame defines a top-level Window with Borders and a
Menu Bar
• Frames are more commonly used than Windows
Once defined, a Frame is a Container which can contain
Components
Frame aFrame = new Frame(“
”Hello World“
”);
aFrame.setSize(100,100);
aFrame.setLocation(10,10);
aFrame.setVisible(true);
Panels
When writing a GUI application, the GUI portion can
become quite complex.
To manage the complexity, GUIs are broken down into
groups of components. Each group generally provides a
unit of functionality.
A Panel is a rectangular Container whose sole purpose is
to hold and manage components within a GUI.
Panel aPanel = new Panel();
aPanel.add(new Button("Ok"));
aPanel.add(new Button("Cancel"));
Frame aFrame = new Frame("Button Test");
aFrame.setSize(100,100);
aFrame.setLocation(10,10);
aFrame.add(aPanel);
Buttons
This class represents a push-button which displays some
specified text.
When a button is pressed, it notifies its Listeners. (More
about Listeners in the next chapter).
To be a Listener for a button, an object must implement the
ActionListener Interface.
Panel aPanel = new Panel();
Button okButton = new Button("Ok");
Button cancelButton = new Button("Cancel");
aPanel.add(okButton));
aPanel.add(cancelButton));
okButton.addActionListener(controller2);
cancelButton.addActionListener(controller1);
Labels
This class is a Component which displays a single line of
text.
Labels are read-only. That is, the user cannot click on a
label to edit the text it displays.
Text can be aligned within the label
Label aLabel = new Label("Enter password:");
aLabel.setAlignment(Label.RIGHT);
aPanel.add(aLabel);
List
This class is a Component which displays a list of Strings.
The list is scrollable, if necessary.
Sometimes called Listbox in other languages.
Lists can be set up to allow single or multiple selections.
The list will return an array indicating which Strings are
selected
List aList = new List();
aList.add("Calgary");
aList.add("Edmonton");
aList.add("Regina");
aList.add("Vancouver");
aList.setMultipleMode(true);
Checkbox
This class represents a GUI checkbox with a textual label.
The Checkbox maintains a boolean state indicating whether
it is checked or not.
If a Checkbox is added to a CheckBoxGroup, it will behave
like a radio button.
Checkbox creamCheckbox = new CheckBox("Cream");
Checkbox sugarCheckbox = new CheckBox("Sugar");
[…
]
if (creamCheckbox.getState())
{
coffee.addCream();
}
Choice
This class represents a dropdown list of Strings.
Similar to a list in terms of functionality, but displayed
differently.
Only one item from the list can be selected at one time and
the currently selected element is displayed.
Choice aChoice = new Choice();
aChoice.add("Calgary");
aChoice.add("Edmonton");
aChoice.add("Alert Bay");
[…
]
String selectedDestination= aChoice.getSelectedItem();
TextField
This class displays a single line of optionally editable text.
This class inherits several methods from TextComponent.
This is one of the most commonly used Components in the
AWT
TextField emailTextField = new TextField();
TextField passwordTextField = new TextField();
passwordTextField.setEchoChar("*");
[…]
String userEmail = emailTextField.getText();
String userpassword = passwordTextField.getText();
TextArea
This class displays multiple lines of optionally editable text.
This class inherits several methods from TextComponent.
TextArea also provides the methods: appendText(),
insertText() and replaceText()
// 5 rows, 80 columns
TextArea fullAddressTextArea = new TextArea(5, 80);
[…
]
String userFullAddress= fullAddressTextArea.getText();
Layout Managers
Since the Component class defines the setSize() and
setLocation() methods, all Components can be sized and
positioned with those methods.
Problem: the parameters provided to those methods are
defined in terms of pixels. Pixel sizes may be different
(depending on the platform) so the use of those methods
tends to produce GUIs which will not display properly on
all platforms.
Solution: Layout Managers. Layout managers are
assigned to Containers. When a Component is added to
a Container, its Layout Manager is consulted in order to
determine the size and placement of the Component.
NOTE: If you use a Layout Manager, you can no longer
change the size and location of a Component through the
setSize and setLocation methods.
Layout Managers (cont)
There are several different LayoutManagers, each of which
sizes and positions its Components based on an algorithm:
FlowLayout
BorderLayout
GridLayout
For Windows and Frames, the default LayoutManager is
BorderLayout. For Panels, the default LayoutManager is
FlowLayout.
Flow Layout
The algorithm used by the FlowLayout is to lay out
Components like words on a page: Left to right, top to
bottom.
It fits as many Components into a given row before moving
to the next row.
Panel aPanel = new Panel();
aPanel.add(new Button("Ok"));
aPanel.add(new Button("Add"));
aPanel.add(new Button("Delete"));
aPanel.add(new Button("Cancel"));
Border Layout
The BorderLayout Manager breaks the Container up into 5
regions (North, South, East, West, and Center).
When Components are added, their region is also
specified:
Frame aFrame = new Frame();
aFrame.add("North", new Button("Ok"));
aFrame.add("South", new Button("Add"));
aFrame.add("East", new Button("Delete"));
aFrame.add("West", new Button("Cancel"));
aFrame.add("Center", new Button("Recalculate"));
Border Layout (cont)
The regions of the BorderLayout are defined as follows:
Center
North
South
West East
Grid Layout
The GridLayout class divides the region into a grid of
equally sized rows and columns.
Components are added left-to-right, top-to-bottom.
The number of rows and columns is specified in the
constructor for the LayoutManager.
Panel aPanel = new Panel();
GridLayout theLayout = new GridLayout(2,2);
aPanel.setLayout(theLayout);
aPanel.add(new Button("Ok"));
aPanel.add(new Button("Add"));
aPanel.add(new Button("Delete"));
aPanel.add(new Button("Cancel"));
What if I don’
t want a LayoutManager?
Ch. VIII - 20
LayoutManagers have proved to be difficult and frustrating
to deal with.
The LayoutManager can be removed from a Container by
invoking its setLayout method with a null parameter.
Panel aPanel = new Panel();
aPanel.setLayout(null);
Graphics
It is possible to draw lines and various shapes within a
Panel under the AWT.
Each Component contains a Graphics object which defines
a Graphics Context which can be obtained by a call to
getGraphics().
Common methods used in Graphics include:
drawLine
drawOval
drawPolygon
drawPolyLine
drawRect
drawRoundRect
drawString
draw3DRect
fill3DRect
fillArc
z
• fillOval
• fillPolygon
• fillRect
• fillRoundRect
• setColor
• setFont
• setPaintMode
•drawImage

AWT.pptx

  • 1.
    AWT (Abstract WindowingToolkit) The AWT is roughly broken into three categories Components Layout Managers Graphics Many AWT components have been replaced by Swing components It is generally not considered a good idea to mix Swing components and AWT components. Choose to use one or the other.
  • 2.
    AWT – ClassHierarchy Panel Button Checkbox Choice Label List Component Container Frame Window TextArea TextField TextComponent Note: There are more classes, however, these are what are covered in this chapter
  • 3.
    Component Component is thesuperclass of most of the displayable classes defined within the AWT. Note: it is abstract. MenuComponent is another class which is similar to Component except it is the superclass for all GUI items which can be displayed within a drop-down menu. The Component class defines data and methods which are relevant to all Components setBounds setSize setLocation setFont setEnabled setVisible setForeground -- colour setBackground -- colour
  • 4.
    Container Container is asubclass of Component. (ie. All containers are themselves, Components) Containers contain components For a component to be placed on the screen, it must be placed within a Container The Container class defined all the data and methods necessary for managing groups of Components add getComponent getMaximumSize getMinimumSize getPreferredSize remove removeAll
  • 5.
    Windows and Frames TheWindow class defines a top-level Window with no Borders or Menu bar. Usually used for application splash screens • Frame defines a top-level Window with Borders and a Menu Bar • Frames are more commonly used than Windows Once defined, a Frame is a Container which can contain Components Frame aFrame = new Frame(“ ”Hello World“ ”); aFrame.setSize(100,100); aFrame.setLocation(10,10); aFrame.setVisible(true);
  • 6.
    Panels When writing aGUI application, the GUI portion can become quite complex. To manage the complexity, GUIs are broken down into groups of components. Each group generally provides a unit of functionality. A Panel is a rectangular Container whose sole purpose is to hold and manage components within a GUI. Panel aPanel = new Panel(); aPanel.add(new Button("Ok")); aPanel.add(new Button("Cancel")); Frame aFrame = new Frame("Button Test"); aFrame.setSize(100,100); aFrame.setLocation(10,10); aFrame.add(aPanel);
  • 7.
    Buttons This class representsa push-button which displays some specified text. When a button is pressed, it notifies its Listeners. (More about Listeners in the next chapter). To be a Listener for a button, an object must implement the ActionListener Interface. Panel aPanel = new Panel(); Button okButton = new Button("Ok"); Button cancelButton = new Button("Cancel"); aPanel.add(okButton)); aPanel.add(cancelButton)); okButton.addActionListener(controller2); cancelButton.addActionListener(controller1);
  • 8.
    Labels This class isa Component which displays a single line of text. Labels are read-only. That is, the user cannot click on a label to edit the text it displays. Text can be aligned within the label Label aLabel = new Label("Enter password:"); aLabel.setAlignment(Label.RIGHT); aPanel.add(aLabel);
  • 9.
    List This class isa Component which displays a list of Strings. The list is scrollable, if necessary. Sometimes called Listbox in other languages. Lists can be set up to allow single or multiple selections. The list will return an array indicating which Strings are selected List aList = new List(); aList.add("Calgary"); aList.add("Edmonton"); aList.add("Regina"); aList.add("Vancouver"); aList.setMultipleMode(true);
  • 10.
    Checkbox This class representsa GUI checkbox with a textual label. The Checkbox maintains a boolean state indicating whether it is checked or not. If a Checkbox is added to a CheckBoxGroup, it will behave like a radio button. Checkbox creamCheckbox = new CheckBox("Cream"); Checkbox sugarCheckbox = new CheckBox("Sugar"); [… ] if (creamCheckbox.getState()) { coffee.addCream(); }
  • 11.
    Choice This class representsa dropdown list of Strings. Similar to a list in terms of functionality, but displayed differently. Only one item from the list can be selected at one time and the currently selected element is displayed. Choice aChoice = new Choice(); aChoice.add("Calgary"); aChoice.add("Edmonton"); aChoice.add("Alert Bay"); [… ] String selectedDestination= aChoice.getSelectedItem();
  • 12.
    TextField This class displaysa single line of optionally editable text. This class inherits several methods from TextComponent. This is one of the most commonly used Components in the AWT TextField emailTextField = new TextField(); TextField passwordTextField = new TextField(); passwordTextField.setEchoChar("*"); […] String userEmail = emailTextField.getText(); String userpassword = passwordTextField.getText();
  • 13.
    TextArea This class displaysmultiple lines of optionally editable text. This class inherits several methods from TextComponent. TextArea also provides the methods: appendText(), insertText() and replaceText() // 5 rows, 80 columns TextArea fullAddressTextArea = new TextArea(5, 80); [… ] String userFullAddress= fullAddressTextArea.getText();
  • 14.
    Layout Managers Since theComponent class defines the setSize() and setLocation() methods, all Components can be sized and positioned with those methods. Problem: the parameters provided to those methods are defined in terms of pixels. Pixel sizes may be different (depending on the platform) so the use of those methods tends to produce GUIs which will not display properly on all platforms. Solution: Layout Managers. Layout managers are assigned to Containers. When a Component is added to a Container, its Layout Manager is consulted in order to determine the size and placement of the Component. NOTE: If you use a Layout Manager, you can no longer change the size and location of a Component through the setSize and setLocation methods.
  • 15.
    Layout Managers (cont) Thereare several different LayoutManagers, each of which sizes and positions its Components based on an algorithm: FlowLayout BorderLayout GridLayout For Windows and Frames, the default LayoutManager is BorderLayout. For Panels, the default LayoutManager is FlowLayout.
  • 16.
    Flow Layout The algorithmused by the FlowLayout is to lay out Components like words on a page: Left to right, top to bottom. It fits as many Components into a given row before moving to the next row. Panel aPanel = new Panel(); aPanel.add(new Button("Ok")); aPanel.add(new Button("Add")); aPanel.add(new Button("Delete")); aPanel.add(new Button("Cancel"));
  • 17.
    Border Layout The BorderLayoutManager breaks the Container up into 5 regions (North, South, East, West, and Center). When Components are added, their region is also specified: Frame aFrame = new Frame(); aFrame.add("North", new Button("Ok")); aFrame.add("South", new Button("Add")); aFrame.add("East", new Button("Delete")); aFrame.add("West", new Button("Cancel")); aFrame.add("Center", new Button("Recalculate"));
  • 18.
    Border Layout (cont) Theregions of the BorderLayout are defined as follows: Center North South West East
  • 19.
    Grid Layout The GridLayoutclass divides the region into a grid of equally sized rows and columns. Components are added left-to-right, top-to-bottom. The number of rows and columns is specified in the constructor for the LayoutManager. Panel aPanel = new Panel(); GridLayout theLayout = new GridLayout(2,2); aPanel.setLayout(theLayout); aPanel.add(new Button("Ok")); aPanel.add(new Button("Add")); aPanel.add(new Button("Delete")); aPanel.add(new Button("Cancel"));
  • 20.
    What if Idon’ t want a LayoutManager? Ch. VIII - 20 LayoutManagers have proved to be difficult and frustrating to deal with. The LayoutManager can be removed from a Container by invoking its setLayout method with a null parameter. Panel aPanel = new Panel(); aPanel.setLayout(null);
  • 21.
    Graphics It is possibleto draw lines and various shapes within a Panel under the AWT. Each Component contains a Graphics object which defines a Graphics Context which can be obtained by a call to getGraphics(). Common methods used in Graphics include: drawLine drawOval drawPolygon drawPolyLine drawRect drawRoundRect drawString draw3DRect fill3DRect fillArc z • fillOval • fillPolygon • fillRect • fillRoundRect • setColor • setFont • setPaintMode •drawImage

Editor's Notes

  • #3 This slide shows the hierarchy of classes which will be covered in this chapter. If you check the Java API documentation, you will note that there are many more classes in the java.awt package.
  • #4 The Component class contains the common features to all items which can be displayed in a GUI. Often, these items are called “widgets”. In the AWT, all widgets are components and, as such, inherit all the data and methods of the Component class.
  • #5 The Container class is an abstract class which encapsulates the logic for managing Components. Note that Containers are, themselves, Components which means that Containers can be placed within other Containers
  • #6 Generally speaking, the Window class is not used very often. The Frame class, on the other hand, is used quite extensively for GUI based applications. Another subclass of Window, which is not described here, I the Dialog class. It is used to display Dialog Boxes. Dialog Boxes are generally used to convey important information to the user, and must be dismissed by the user before the application can continue. It should be noted that dialog boxes disrupt the flow of an application and can cause great user frustration if not used appropriately.
  • #7 The Panel class is probably the most important class within the AWT. Panels can contain Components (which includes other Panels). It allows the GUI screen to be partitioned into manageable pieces. Panels should contain Components which are functionally related. For example, if an application wished to allow the user to input their name, address, phone number and other relevant contact information, it would be good design to place all of the necessary GUI Components on a Panel. That panel can be then added to and removed from other Containers within the application.
  • #8 All GUI systems offer some form of push button. The Button class in Java represents that functionality. Buttons are typically single purpose (ie. Their function does not change).
  • #9 Many GUI applications require users to input data within TextFields, TextAreas, dropdown boxes, etc. However, presenting the user with an series of TextFields without any description would provide a great deal of confusion to the user. All GUI systems allow for the addition of Labels to the interface which provide textual information which aids in the description of the interface itself.
  • #10 The List class comes under many names in different GUI systems. Lists provide a list of strings (which is scrollable space the strings take up exceeds the allotted screen real estate) which can be selected by the user. The programmer may allow the user to select multiple strings within the list.
  • #11 Checkboxes allow for yes/no selections by the user. Each checkbox maintains an internal state indicating whether it is selected or not. If it is selected, it will display itself in such a manner as to indicate it is selected. The state of a checkbox can be queried through the getState method. Multiple checkboxes will all behave independently of one another meaning each one can be individually checked or unchecked. However, if a group of checkboxes are associated with a CheckBoxGroup object, then only one of the checkboxes can be selected at any one time. It is through the use of CheckBoxGroup that the AWT provides “RadioButton” functionality.
  • #12 This class provides a list of strings to choose from (just like a list does) but the list is not displayed to the user at all times. Instead, the user must click the Choice to reveal the list. Once revealed, the user may select one of the items within the list. The currently selected item is displayed.
  • #13 A TextField provides the user with a location that he/she may input a single line of text. Most TextFields are used in conjunction with a Label. The text provided by the label should describe the purpose (and thus, the expected input for) the TextField.
  • #14 If the user is to input multiple lines of text, a TextArea is used instead of a TextField.
  • #17 Flow layout is the default layout manager for Panels
  • #18 Border Layout is the default layout for Frames and Windows