swing - 2 session 13. swing - 2 / 2 of 38 objectives (1) discuss trees and tables discuss progress...
TRANSCRIPT
Swing - 2
Session 13
Swing - 2 / 2 of 38
Objectives (1)
Discuss trees and tables Discuss progress bars Discuss MVC architecture
Describe menus
Swing - 2 / 3 of 38
Objectives (2)
KeyStroke handling, Action Objects, Nested Containers
Virtual Desktops, Compound Borders Drag and Drop Java 2D Customized Dialogs, Standard Dialog classes
Discuss features of Swing such as:
Swing - 2 / 4 of 38
A Swing menu consists of a menubar, menuitems and menus
Menubar is the root of all menus and menuitems
Menus show a list of items that indicate various tasks
Select or click an option and another list or sub-menu opens up
Menus
Swing - 2 / 5 of 38
JFC Menus components
Swing - 2 / 6 of 38
Hierarchy
JMenuBar JPopupMenu JAbstractButton JSeperator
JMenuItem
JMenu JCheckBoxMenuItem JRadioButtonMenuItem
JComponent
Container
Component
Object
Swing - 2 / 7 of 38
JMenuBar
Consists of a number of JMenus with each JMenu represented as a string within the JMenuBar
JMenuBar requires: ‘SingleSelectionModel’ –
keeps track of the menu currently selected ‘LookAndFeel’ class –
Responsible for drawing the menu bar and responding to events that occur in it
JMenuBar is a component that can be added to a container through a JFrame, JWindow or JInternalFrame’s rootpane.
Swing - 2 / 8 of 38
JMenu
JMenu has two additional classes: JPopupMenu –
Used to display the JMenu’s menu items LookAndFeel –
Responsible for drawing the menu in the menubar and for responding to all events that occur in it
JMenu is seen as a text string under JMenuBar while it acts as a popup menu when the user clicks on it
Swing - 2 / 9 of 38
JMenu - Example
Output
Swing - 2 / 10 of 38
JPopupMenu
Used for the “pull-right” menu It is also used as a shortcut menu, which is
activated by the right click of the mouse The constructors used to create JPopupMenu
are: public JPopupMenu() – creates a JPopupMenu public JPopupMenu(String label) – creates a
JPopupMenu with the specified title
Displays expanded form of menu
Swing - 2 / 11 of 38
Functions of JPopupMenu
Determines whether the mouse event is the popup trigger for the platform
public boolean isPopupTrigger()
Displays the popup menu at the position (x,y) in the coordinate space of the component “c”
public void show(Component c, int x, int y)
Creates a new menu item with the specified text and appends it to the end of the menu
public JMenuItem add(String s)
Appends the specified menu item at the end of the menu
public JMenuItem add(JMenuItem menuItem)
PurposeMethod
Swing - 2 / 12 of 38
JPopupMenu – Example (1)
Swing - 2 / 13 of 38
JPopupMenu – Example (2)
Swing - 2 / 14 of 38
JPopupMenu – Example (3)
Swing - 2 / 15 of 38
JPopupMenu – Example (4)
Output
Swing - 2 / 16 of 38
JMenuItem A component that appears as a text string
possibly with an icon in a JMenu or JPopupMenu
Dialog Box
JMenuItem dissapears
Swing - 2 / 17 of 38
JMenuItem - Example
Output
Swing - 2 / 18 of 38
JCheckBoxMenuItem
Checkboxes are created using JCheckBox class
May have a text string and/or an icon When a JCheckBoxMenuItem is clicked and
released, the state of a menu item changes to selected or deselected
Contains checkboxes as its items
Swing - 2 / 19 of 38
JRadioButtonMenuItem
May have a text string and/or an icon Clicking a selected radio button does not
change its state Clicking an unselected radio button deselects
the earlier selected one
Similar to checkboxes except that only one radio button can be selected at any point of time
Swing - 2 / 20 of 38
Example (1)
Swing - 2 / 21 of 38
Example (2)
Swing - 2 / 22 of 38
Example (3)
Output
Swing - 2 / 23 of 38
Trees
Windows Explorer has a tree like structure depicting files and folders
Windows Explorer structures can be created in Java using JTree
Every row in the hierarchy is termed as a node By default, the tree displays the root node A node having child nodes is called a branch
node else it is called as a leaf node
A Tree depicts information in a hierarchical, vertical manner
Swing - 2 / 24 of 38
JTree – Example (1)
Swing - 2 / 25 of 38
JTree – Example (2)Output
When the nodes are clicked
Swing - 2 / 26 of 38
Tables
Useful in storing numerical data Certain computer applications require tables
to display data allowing the user to edit them JTable class in Swing enables us to create
tables JTable does not store data, it only provides a
view of it
Volumes of data are better maintained in a tabular format than as a list
Swing - 2 / 27 of 38
JTable - Example
Output
Swing - 2 / 28 of 38
Progress Bars
A better way to do the same is by using charts or bar graphs
Certain programs provide a graphical indication of a task that is currently under progress
Swing uses JProgressBar class to implement the same
Monitoring the progress of any activity can be done by using percentage figures
Swing - 2 / 29 of 38
Progress Bars – Example (1)
Swing - 2 / 30 of 38
Progress Bars – Example (2)
Output
Swing - 2 / 31 of 38
MVC
To achieve this, Swing components work within the MVC model
MVC model stands for: Model View Controller
Swing helps to specify the look and feel, such as the Java look and feel, Windows look and feel
Swing - 2 / 32 of 38
Interaction between MVC
Model
Controller
View
View reads the contents
Informs view of state change
Informs the view to update visuals
Up
date
th
e c
on
ten
ts
Swing - 2 / 33 of 38
Characteristics common to Swing Components
Visual appearance - determines what the component should look like
Behavior - decides how the component should respond to events
Content - decides on the state of the component
Swing - 2 / 34 of 38
MVC classes
View – Responsible for showing the component on the basis of the state
Controller – Handles the event Interaction between the classes are
controlled by the MVC pattern Each class has necessary methods defined
within them
Model – Stores the data or the state of the object
Swing - 2 / 35 of 38
MVC - Example
ControllerEvent notification
ModelView
Calls necessary files to make changes
Informs about the change of state
Redraws the component
Swing - 2 / 36 of 38
Swing features (1)
Since the fundamental class JComponent contains a RootPane, any component can be nested within another
KeyStrokeHandling, ActionObjects, Nested Containers Keystrokes can be captured by creating a
KeyStroke object
Action interface extends ActionListener specifying an enabled property as well as properties for text descriptions
Swing - 2 / 37 of 38
Swing Features (2)
Facilitates transfer of data between Java applications as well as to native applications
Virtual Desktops and Compound Borders JDesktopPane and JInternalFrame classes can be
used to create a virtual desktop Compound borders are created by combining
various border styles
Drag and Drop
Swing - 2 / 38 of 38
Swing Features (3)
Using Java 2D API, one can: Create lines of any thickness Use different gradients and textures to fill shapes Move, rotate, scale and trim text and graphics Combine overlapping text and graphics
Customized Dialogs and Standard Dialog classes Makes use of JOptionPane class Standard dialog classes available are:
JFileChooser JColorChooser
Java 2D