Lecture 08 Abstract Windows Toolkit (AWT) and Swing Components - PowerPoint PPT Presentation

slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Lecture 08 Abstract Windows Toolkit (AWT) and Swing Components PowerPoint Presentation
Download Presentation
Lecture 08 Abstract Windows Toolkit (AWT) and Swing Components

play fullscreen
1 / 64
Lecture 08 Abstract Windows Toolkit (AWT) and Swing Components
126 Views
Download Presentation
lev
Download Presentation

Lecture 08 Abstract Windows Toolkit (AWT) and Swing Components

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Lecture 08Abstract Windows Toolkit (AWT) and Swing Components

  2. Outline • GUI Interface • JAVA Graphics API • Event Handling • Layout Managers • JComponents

  3. GUI Interface • Web-based application use a graphical user interface (GUI) • The graphical components are bundled in a library known as the Abstract Window Toolkit (AWT) • Mapped to the platform-specific components • Heavyweight components

  4. Why swing? • The appearance and how the user interacts with the program are known as that program’s look and feel. • javax.swing API makes the look and feel of GUI the same across platforms (lightweight component)

  5. GUI java.lang.Object java.awt.Component java.lang.Container java.swing.JComponent

  6. The Java Graphics API Classes in the java.awt AWTEvent LayoutManager package Heavyweight Fon t FontMetrics Object Color Panel Applet JApplet Graphics Component Container Window Frame JFrame * Dialog JDialog Swing Components JComponent in the javax.swing package Lightweight

  7. Java Graphics API • Component • A superclass of all user interface classes • Container • Used to group components • A layout manager is used to position and place components in a container in the desired location and style • JComponent • A super class of all the lightweight • JFrame • This is a window nor contained inside another window • It is a container that holds another Swing user-interface components

  8. Java Graphics API • JDialog • A popup window or message box generally used as a temporary window to receive additional information from the user or to provide notification that an event has occurred • JApplet • A subclass of Applet • You must extend JApplet to create a Swing-based Java Applet • JPanel • An invisible container that holds user-interface components • Panel can be nested

  9. Java Graphics API • Graphics • An abstract class that provides a graphical context for drawing lines and simple shapes • Color • A class deals with the colors of graphics components • Font • Usef for drawings in Graphics • FontMetrics • An abstract class used to get the properties of the fonts used in drawings

  10. Graphic Classes Classification • Container classes • JFrame, JPanel, and JApplet • Component classes • Subclasses of JComponent • JButton, JTextField, JTextArea, JComboBox, JList, JRadioButton, and JMenu • Helper classes • Classes used by components and containers to draw and place objects • Graphics, Color, Font, FontMetrics, Dimension, and Layout Managers

  11. JComponent . JCheckBoxMenuItem JMenuItem JMenu AbstractButton JButton .JRadioButtonMenuItem .JToggleButton JCheckBox JRadioButton JComponent .JEditorPane .JTextComponent .JTextField .JPasswordField .JT extArea .JLabel .JList .JCo mboBox .JMenuBar .JPanel .JOptionPane .JScrollBar .JScrollPane .JFileChooser .JPopupMenu .JSeparator .JSlider .JTabbedPane .JRootPane .JPane .JProgressBar .JToolBar .JSplitPane .JTable .JTree .JColorChooser .JInternalFrame .JToolTip .JLayeredPane .JTableHeader

  12. Frames • Frame is a window that is not contained inside another window. Frame is the basis to contain other user interface components in Java graphical applications. • The Frame class can be used to create windows.

  13. JFrame • Two constructors public JFrame ( ) • Creates an untitled JFrame object public JFrame( String title) • Create a JFrame object with a specific title • JFrame Methods • setTitle (String) JFrame myFrame = new JFrame( ) this.setTitle (“ISQS 6337”); or setTitle (“ISQS 6337); • setSize (int, int): Specify the frame size • setSize (Dimension): • sets a JFrame’s size using a Dimension class by calling Dimension(int, int) constructor that creates the object representing the specified width and height arguments • String getTitle( ) • Returns a JFrame’s title

  14. JFrame • setVisible (true) • The frame is not visible until setVisible (true) method is applied • boolean isResizable( ) • Returns true or false to indicate whether the Frame is resizable • setDefaultCloseOperation (Jframe.EXIT_ON_CLOSE) • Tells the program to terminate when the frame is closed

  15. Example: Creating JFrame • import javax.swing.*; • public class MyFrame • { • public static void main(String[] args) • { • JFrame frame = new JFrame("Test Frame"); • frame.setSize(400, 300); • frame.setVisible(true); • frame.setDefaultCloseOperation( • JFrame.EXIT_ON_CLOSE); • } • }

  16. Creating Frame • By default, a frame is displayed in the upper-left corner of the screen. • To display a frame at a specified location, you can use the setLocation(x, y) method in the JFrame class. This method places the upper-left corner of a frame at location (x, y).

  17. Centering Frames Screen (x, y) Frame frameHeight screenHeight frameWidth screenWidth

  18. Centering Frames • Toolkit class • the abstract superclass of all actual implementations of the AWT • getScreenSize( ) • Can be used to obtain screen’s width and height • Dimension class • Encapsulates the width and height of a component • get.Size method • Get the size of Dimension object • Return dimension of the object • JFrame • setLocation (x, y)

  19. Example • CenterFrame

  20. Event-Driven Programming • An event can be defined as a type of signal to the program that something has happened. • The event is generated by external user actions such as mouse movements, mouse button clicks, and keystrokes, or by the operating system, such as a timer • The GUI component on which an event is generated is called the source object • E.g. • A button is the source object for a clicking-button action event

  21. Event Classes

  22. Selected User Actions Source Event TypeUser Action Object Generated Clicked on a button JButtonActionEvent Changed text JTextComponentTextEvent Double-clicked on a list item JListActionEvent Selected or deselected an item JListItemEvent with a single click Selected or deselected an item JComboBoxItemEvent

  23. Event Handling Model • GUI event information is stored in an object of a class that extends AWTEvent • A program performs two key tasks • Event listener • An object of a class that implements one or more the event-listener interface from package java.awt.event • Event handler • A method that is automatically called in response to a particular type of event

  24. Event Handling Model • Each event-listener interface specifies one or more event handling methods that must be defined in the class that implements the event-listener interface • The use of event listeners is known as the delegation event model

  25. The Delegation Model

  26. Selected Event Handlers Event Class Listener Interface Listener Methods (Handlers)ActionEvent ActionListener actionPerformed(ActionEvent) ItemEvent ItemListener itemStateChanged(ItemEvent) WindowEvent WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)

  27. Inner Class • Classes can be defined inside other classes • Inner classes are used mainly in event handling • Inner classes with names have the file name OuterClassName$InnerClassName.class Public class A extends B { public class ActionEventHandler implements ActionLister{ public void actionPerformed ( ActionEvent e) { } } }

  28. Anonymous Inner Class • Anonymous inner class (class without a name) • Anonymous inner class have the file name OuterClassName$#.class • # starts at 1 and is incremented for each anonymous inner class encountered during compilation Window.addWindowListner( new WindowAdapter( ) { public void windowClosing( WindowEvent e) { System.exit(0); } } );

  29. JLabel • A subclass of Jcomponent • A label is a display area for a short text, an image, or both. The non-default constructors for labels are as follows: JLabel(String text, int horizontalAlignment) JLabel(String text) JLabel(Icon icon) JLabel(Icon icon, int horizontalAlignment)

  30. Text Components • Use text component when you want to both display and input information • JTextField • Allows only a single line of text • JTextArea • Allows multiple lines of text

  31. JTextField • A text field is an input area where the user can type in characters. • Text fields are useful in that they enable the user to enter in variable data (such as a name or a description). • A text field can display information like a label

  32. JTextField Constructors • JTextField(int columns) • Creates an empty text field with the specified number of columns. • JTextField txtName = new JTextField (20); • JTextField(String text) • Creates a text field initialized with the specified text. • JTextField(String text, int columns) • Creates a text field initialized with the specified text and the column size. • JTextField (String, int maximumNumberCharaters)

  33. JTextField Methods • getText() • Returns the string from the text field. • setText(String text) • Puts the given string in the text field. • setEditable(boolean editable) • Enables or disables the text field to be edited. By default, editable is true. • setColumns(int) • Sets the number of columns in this text field. The length of the text field is changeable.

  34. JTextArea • If you want to let the user enter multiple lines of text, you cannot use text fields unless you create several of them. The solution is to use JTextArea, which enables the user to enter multiple lines of text.

  35. JTextArea Constructors • JTextArea( ) • Default constructor • Create an empty text area • JTextArea(int rows, int columns) • Creates a text area with the specified number of rows and columns. • JTextArea(String s, int rows, int columns) • Creates a text area with the initial text andthe number of rows and columns specified.

  36. JTextArea Method • Append method • Allows to add information to the end of the string in a text area • Use append method to build your output as the information becomes available to create multiple lines of output • General Format componentName.append(String); • Example txaInovice.append(“Sold to:” + strName);

  37. Declares Container reference c and assigns it the result of a call to Method getContentPane Method getContentPane returns a content pane That can be used to attach GUI components Container • The onscreen display area has a content pane to which the GUI components must be attached so they can be displayed at execution time • The content pane is an object of class Container from the java.awt package Container c = getContentPane();

  38. JPanel • Panels act as smaller containers for grouping user interface components JPanel p = new JPanel(); • Adding component to a JPanel • add method • E.g. • add(ComponentName);

  39. JButton • A button is a component that triggers an action event when clicked. The following are JButton non-default constructors: JButton(String text) JButton(String text, Icon icon) JButton(Icon icon) • All button types are subclasses of AbstractButton from javax.swing package • Button types • Command buttons, check boxes, and radio buttons • A command button gegnerates an ActionEvent • When the user clicks the button with the mouse

  40. Responding to JButton Event public void actionPerformed(ActionEvent e) { // Get the button label JoptionPane.showMessageDialog (null, “You pressed: ”+ e.getActionCommnad() ); }

  41. Layout Managers • Java’s layout managers provide a level of abstraction to automatically map your user interface on all windowing systems. • The UI components are placed in containers. Each container has a layout manager to arrange the UI components within the container. • FlowLayout • GridLayout • BorderLayout • CardLayout • GridBagLayout

  42. FlowLayout Manager • The components are arranged in the container from left to right in the order in which they were added. When one row becomes filled, a new row is started. • FlowLayout Constructors • public FlowLayout(int align, int hGap, int vGap) • Constructs a new FlowLayout with a specified alignment, horizontal gap, and vertical gap. The gaps are the distances inpixel between components. • public FlowLayout(int alignment) • Constructs a new FlowLayout with a specified alignment and a default gap of five pixels for both horizontal and vertical. • public FlowLayout() • Constructs a new FlowLayout with a default center alignment and a default gap of five pixelsfor both horizontal and vertical.

  43. BorderLayout Manager • The BorderLayout manager divides the window into five areas: East, South, West, North, and Center. • Components are added to a BorderLayout • add(Component, constraint), where constraint is BorderLayout.East, BorderLayout.South, BorderLayout.West", BorderLayout.North", or BorderLayout.Center.

  44. GridLayout Manager • The GridLayout manager arranges components in a grid (matrix) formation with the number of rows and columns defined by the constructor. The components are placed in the grid from left to right starting with the first row, then the second, and so on.

  45. GridLayout Constructors • public GridLayout(int rows, int columns) • Constructs a new GridLayout with the specified number of rows and columns. • public GridLayout(int rows, int columns, int hGap, int vGap) • Constructs a new GridLayout with the specified number of rows and columns, along with specified horizontal and vertical gaps between components.

  46. Example • Example 3:Tax Systems • Example 4:Inventory Systems • Example 5: Add List • Example 6: Car Payment System

  47. JCheckBox • A check box is a component that enables the user to toggle a choice on or off, like a light switch. • JCheckBox constructors JCheckBox(), JCheckBox(String text), JCheckBox(String text, boolean selected), JCheckBox(Icon icon), JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected)

  48. JCheckBox • JCheckBox Methods • setLabel (String Label) • getLabel • void setState (boolean condition) • Sets the JCheckBox state to true for checked or false for unchecked • boolean getState • Requires using ItemListner • Provides for objects whose states change from true of false • Requires itemStateChanged( ) method • Example 7: Dental Application

  49. JRadioButton • Radio buttons are variations of check boxes. They are often used in the group, where only one button is checked at a time. • JRadioButton constructors JRadioButton(), JRadioButton(String text) JRadioButton(String text, boolean selected), JRadioButton(Icon icon) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected) • Example 8: JRadioButton

  50. JComboBox • A combo box is a simple list of items from which the user can choose. It performs basically the same function as a list, but can get only one value. To create a choice, use its default constructor: JComboBox() • Add items to the list with the addItem( ) method JComboBox ( ) myChoice = new JComboBox ( ); myChoice.addItem (“English”); myChoice.addItem (“Math”);