Download An Introduction to Control Structures

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Components and Facilities
for Rich Graphical User
Interfaces
Chapter 7
Java Programming: Advanced Topics
1
Objectives
• Become familiar with the extensive library of GUI
components offered by the Swing API
• Write code that uses the methods of the
javax.swing.JComponent class
• Learn to add windows, dialog boxes, and panels
to a GUI application
• Learn to add labels, buttons, and check boxes to
a GUI application
• Learn to add menus, toolbars, and actions to a
GUI application
• Learn to add sliders, spinners, progress bars, and
scrollbars to a GUI application
Java Programming: Advanced Topics
2
Objectives (Cont.)
• Learn to add lists and combo boxes to a GUI
application
• Learn to add text-entry components to a GUI
application
• Learn to add file and color choosers to a GUI
application
• Learn to add tables and trees to a GUI
application
• Add printing support to a GUI application using
the 2D API
• Learn how to discover what print facilities are
available to an application using the Java Print
Service API
Java Programming: Advanced Topics
3
Programming with the JFC
• To create applets or application that have
graphical user interfaces (GUIs), use the Java
Foundation Classes (JFC) of the Java platform
• Support for the development of GUIs for the Java
platform is provided by a combination of the AWT
and Swing APIs
Java Programming: Advanced Topics
4
Packages of the AWT
Java Programming: Advanced Topics
5
Packages of the AWT (Cont.)
Java Programming: Advanced Topics
6
The Swing Packages
Java Programming: Advanced Topics
7
The Swing Packages (Cont.)
Java Programming: Advanced Topics
8
Swing API Components
•
•
•
•
•
•
•
•
•
Windows
Dialog boxes
Panels
Labels
Buttons
Check Boxes
Menus
Toolbars
Sliders
•
•
•
•
•
•
•
•
•
Spinners
Progress bars
Scrollbars
Lists
Combo boxes
Text-entry components
Tables
Trees
File and color choosers
Java Programming: Advanced Topics
9
JComponent Class
• The JComponent class is the abstract
superclass for all Swing components
• Methods:
–
–
–
–
–
void addxxxListener(xxxListener object )
void repaint( )
void repaint ( long msec)
void repaint (int x, int y, int height, int width)
void repaint ( long msec, int x, int y, int height, int
width)
– void setVisible( boolean b )
– void update( Graphics context )
Java Programming: Advanced Topics
10
Windows, Dialog Boxes, and
Panels
• Containers: components that hold other
components
• Swing provides several top-level container
components:
–
–
–
–
JApplet
JDialog
JFrame
JWindow
• To add a component to a JApplet, JDialog,
JFrame, or JWindow object, call the method
getContentPane
Java Programming: Advanced Topics
11
Windows, Dialog Boxes, and
Panels (Cont.)
• An application runs in a JFrame object
• An applet runs in a JApplet object
• You build a GUI adding containers and
components to the JFrame object of an
application or the panel of an applet
• JDesktopPane, JInternalFrame, JOptionPane,
and JPanel are lightweight components that
extend JComponent
Java Programming: Advanced Topics
12
Methods of the Container Class
• The Container class provides several methods
for adding and removing components or working
with layouts:
–
–
–
–
–
–
void add( Component comp )
void add( Component comp, Object constraint )
Component[ ] getComponents()
LayoutManager getLayout()
void remove( Component comp )
void setLayout( LayoutManager mgr )
Java Programming: Advanced Topics
13
Labels, Buttons, and Check
Boxes
• Labels add text that typically explains the
purpose of the other elements of a user
interface
• Buttons and check boxes provide the
opportunity to make selections and trigger
actions
Java Programming: Advanced Topics
14
AbstractButton and Its
Subclasses
Java Programming: Advanced Topics
15
Menus, Toolbars, and Actions
• To add menus to your GUI, use the classes:
–
–
–
–
–
–
JMenuBar
JMenuItem
Jmenu
JPopupMenu
JRadioButtonMenuItem
JCheckBoxMenuItem
• Swing provides support for toolbars through the
JToolBar class
Java Programming: Advanced Topics
16
Menus, Toolbars, and Actions
(Cont.)
• Swing provides a mechanism, the Action
interface, for defining objects that can be put
into toolbars and menus
• Actions that are common to both menus and
toolbars can be created as subclasses of
AbstractAction to provide a single point of
control
Java Programming: Advanced Topics
17
Menus, Toolbars, and Actions
(Cont.)
• To create a main menu for an application, use a
JMenuBar object
• Use the add method to add menus to the menu
bar and the setJMenuBar method to add the
menu bar to its window
• For a menu that is associated with a component
and pops up when the user clicks a component,
create a JPopupMenu object
Java Programming: Advanced Topics
18
Menus, Toolbars, and Actions
(Cont.)
• For every item in a menu, use an instance of
JMenuItem or a subclass of JMenuItem
• To nest menus, use JMenu objects. A JMenu
object is a JMenuItem object that is itself a menu
• For a menu item that is also a check box, use a
JCheckBoxMenuItem object
• For a menu item that is also a radio button, use
a JRadioButtonMenuItem object.
Java Programming: Advanced Topics
19
Menu Classes in javax.swing
Java Programming: Advanced Topics
20
Sliders, Spinners, Progress Bars,
and Scrollbars
• JProgressBar, JScrollBar, JSlider, and JSpinner
allow users to select or display a value within a
bounded range
• Programs use JProgressBar objects to indicate
the progress of a long-running operation
• Use a JScrollBar object to control the visible
contents of a component
Java Programming: Advanced Topics
21
Sliders, Spinners, Progress Bars,
and Scrollbars (Cont.)
• Use a JScrollPane object to display a
component with contents that are likely to
exceed the available visible area
• The JScrollPane class adds scrollbars
automatically to control scrolling operations
• Use a JSlider object to allow selection of a
value within a bounded range
• Use a JSpinner object to allow selection of a
value within a bounded range from a
predetermined list of legal values
Java Programming: Advanced Topics
22
Output of the FontSliderSpinner
Class
Java Programming: Advanced Topics
23
Lists and Combo Boxes
• The JComboBox component is a drop-down list
that is useful for lists with a small number of
items
• A JList object displays a list of choices from
which it is possible to select one or multiple
items
• JList objects can be contained within
JScrollPane and scrolled to view the entire list
Java Programming: Advanced Topics
24
Text-Entry Components
• A JEditorPane object is a region that is
designed to parse and edit specific types of
structured text content
• A JFormattedTextField object is an entry field in
which the data that the user enters must meet
the specified formatting rules
• A JPasswordField field can display a single line
of text and lets the user enter or edit the text
Java Programming: Advanced Topics
25
Text-Entry Components (Cont.)
• JTextArea is a region that can contain several
lines of text
• JTextField can display a single line of text and
lets the user enter or edit the text
• A JTextPane object is a region that can contain
several lines of text
Java Programming: Advanced Topics
26
TextComponent and Its
Subclasses
Java Programming: Advanced Topics
27
Color and File Choosers
• Swing includes the standard classes
JFileChooser and JColorChooser that
implement panels and that can be embedded in
dialogs or internal frames
• JColorChooser is a panel that allows users to
browse a palette of available colors and select
one
• JFileChooser is a panel that allows users to
browse the contents of the file system and
select a file to open or a file to save
Java Programming: Advanced Topics
28
Tables and Trees
• Swing provides two sophisticated controls for
structured information:
– JTable
– JTree
• The JTable class is best suited for tabular
information
• The JTree class is ideal for hierarchical
information
Java Programming: Advanced Topics
29
Output of the JTree Example
Class
Java Programming: Advanced Topics
30
The JTable Constructors
• Table()
• Table(int rows, int columns )
• Table( Object[][] rowData, Object[]
columnNames )
• Table( Vector rowData, Vector columnNames )
• Table( TableModel model )
• Table( TableModel model, TableColumnModel
tcModel )
• Table( TableModel model, TableColumnModel
tcModel, ListSelectionModel lsModel )
Java Programming: Advanced Topics
31
The Output of the JTable Class
Java Programming: Advanced Topics
32
Printing with the 2D API
• The Java 2D API introduced the java.awt.print
package to provide printing support on the Java
platform
• The java.awt.print.PrinterJob class provides the
control point for displaying print-related dialog
boxes, indicating what will print, and actually
starting the print job
• The PageFormat class provides information
about the size, orientation, and area available
for printing for a page of printed output
Java Programming: Advanced Topics
33
java.awt.print.PrinterJob
• Methods of the class java.awt.print.PrinterJob:
–
–
–
–
–
–
–
–
–
PageFormat defaultPage( )
PrintService getPrintService()
PageFormat pageDialog( PageFormat format )
PageFormat pageDialog( PrintRequestAttributeSet
attrs )
void print()
void print( PrintRequestAttributeSet attrs )
boolean printDialog()
boolean printDialog( PrintRequestAttributeSet attrs )
void setPrintable( Printable painter )
Java Programming: Advanced Topics
34
The Page Setup Dialog Box
Java Programming: Advanced Topics
35
Java Print Service API
• The Java Print Service API can be used for
printing text and graphics that are displayed
within an application
• The Java Print Service API is used to handle
many flavors of documents, to search and
discover print services for handling these
document flavors
Java Programming: Advanced Topics
36
Java Print Service API (Cont.)
• The Doc interface encapsulates the interface for
an object that supplies a piece of print data for a
print job
• The DocFlavor class encapsulates the format in
which data will be supplied to a DocPrintJob
object
• The javax.print.DocPrintJob interface represents
a print job that can print a specified document
with a set of job attributes
Java Programming: Advanced Topics
37
Summary
• The AWT API provides the infrastructure for
layout managers, events, event listeners, and
basic 2D graphics support
• The Swing API provides a comprehensive set
of GUI components to produce professional
applications
• JComponent is the superclass of all Swing
components, and JApplet, JDialog, JFrame,
and JWindow are the top-level containers
• An application runs in a JFrame object, and an
applet runs in a JApplet object
Java Programming: Advanced Topics
38
Summary (Cont.)
• Swing provides classes to support buttons,
check boxes, menus, toolbars, sliders, spinners,
progress bars, scrollbars, lists, combo boxes,
text-entry components
• Swing includes the standard classes
JFileChooser and JColorChooser that
implement panels
• JTable is used for tabular information, and JTree
for hierarchical information
• Print capability can be added to an application
by using either the Printing API from the 2D API
or by using the Java Print Service API
Java Programming: Advanced Topics
39