THE SWING UI TOOLKIT - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

THE SWING UI TOOLKIT

Description:

THE SWING UI TOOLKIT Mostly from The Swing Connection SWING TOOLKIT 100% Java implementation of components Pluggable Look & Feel customizable for different ... – PowerPoint PPT presentation

Number of Views:104
Avg rating:3.0/5.0
Slides: 23
Provided by: JarkkoLe6
Category:

less

Transcript and Presenter's Notes

Title: THE SWING UI TOOLKIT


1
THE SWING UI TOOLKIT
  • Mostly from The Swing Connection

2
SWING TOOLKIT
  • 100 Java implementation of components
  • Pluggable Look Feel
  • customizable for different environments, or
  • use Java LF in every environment
  • Lightweight components
  • no separate (child)windows for components
  • allows more variation on component structure
  • makes LF possible
  • Three parts
  • component set (subclasses of JComponent)
  • support classes
  • interfaces

3
OTHER APIs
4
UI COMPONENTS
5
BUTTONS
6
MENUS
JMenuBar
7
OTHER COMPONENTS

Border Interface
JApplet
JColorChooser
JComboBox
ImageIcon
JInternalFrame
JDialog
JFileChooser
8
OTHER COMPONENTS
JList
JLabel
JScrollBar
JScrollPane
JSlider
JOptionPane
JSplitPane
JTabbedPane
9
OTHER COMPONENTS
JTable
JTextArea
JTextField
JToolBar
JToolTip
JTree
10
ARCHITECTURE
  • Goals
  • entirely on Java
  • pluggable LF
  • model-driven programming
  • JavaBeans
  • compability with AWT
  • Use MVC?
  • Model represents the data
  • View as a visual representation of the data
  • Controller takes input and translates it to
    changes in data

11
THE UI DELEGATE
  • No reason to separate controller and view
  • A separate UI object for defining the
    visualrepresentation and controller behaviour
  • the UI delegate

12
MODELS
  • Data-centric applications
  • Separate model interface for every component
  • GUI-state models
  • up-down state in JButton and subclasses
  • application data models
  • selection state in JToggleButton and subclasses
  • Application programmer can implement his/her own
    data models for existing components
  • Shared model definitions

13
MODEL SEPARATION
  • JSlider uses BoundedRangeModel
  • public JSlider(int orientation, int min, int max,
    int value) checkOrientation(orientation)
    this.orientation orientation this.model
    new DefaultBoundedRangeModel(value, 0, min,
    max) this.model.addChangeListener(changeListen
    er) updateUI()
  • Calling setModel, application can replace the
    default
  • JSlider slider new JSlider()BoundedRangeModel
    myModel new DefaultBoundedRangeModel()
    public void setValue(int n)
    System.out.println("SetValue " n)
    super.setValue(n) )slider.setModel
    (myModel)

14
CHANGE NOTIFICATION
  • Models implement methods for adding andremoving
    listeners
  • Lightweight notification
  • only notify
  • listener queries about the changes
  • e.g. scrollabar dragged
  • Stateful notification
  • event described the change
  • for complex data models
  • e.g. changes in the column of table

15
LIGHTWEIGHT NOTIFICATION
  • ChangeListener with one single method
  • public void stateChanged(ChangeEvent e)
  • Listening to JSlider
  • JSlider slider new JSlider()BoundedRangeModel
    model slider.getModel()model.addChangeListener
    (new ChangeListener() public void
    stateChanged(ChangeEvent e) // need to
    query the model to get updated value...
    BoundedRangeModel m (BoundedRangeModel)e.getSour
    ce() System.out.println("model changed "
    m.getValue()) )

16
STATEFUL NOTIFICATION
  • Tracking JList selection
  • String items "One", "Two", "Three")JList
    list new JList(items)ListSelectionModel
    sModel list.getSelectionModel()sModel.addListS
    electionListener (new ListSelectionListener()
    public void valueChanged(ListSelectionEve
    nt e) // get change information directly
    // // from the event instance... if
    (!e.getValueIsAdjusting())
    System.out.println("selection changed "
    e.getFirstIndex())
    )

17
IGNORING MODELS
  • Most components provide API to the modeldirectly
  • E.g. JSliders method
  • public int getValue() return
    getModel().getValue()
  • Program can simply do the following
  • JSlider slider new JSlider()int value
    slider.getValue()
  • So, wheres the model, anyway!

18
SETTING LOOK FEEL
  • To set a particular LF (here CDE/Motif), write
  • UIManager.setLookAndFeel( "com.sun.java.swing.p
    laf.motif.MotifLookAndFeel )
  • To set the appropriate LF, whatever the current
    environment, write
  • UIManager.setLookAndFeel( UIManager.getSystemLo
    okAndFeelClassName() )
  • Do the above preferably at the end of the program
    (before instantiating any components)

19
THE SWING PACKAGES
  • The Accessibility package (javax.accessibility)
  • provides support for supporting the screen access
    products for people with disabilities
  • Swing has full support for accessibility
  • javax.swing
  • contains nearly all of the Swing components
  • notable exception is JTextComponent (in
    javax.swing.text)
  • javax.swing.border
  • in need for customized borders, take a look
  • javax.swing.event
  • includes the additional event classes (not found
    in java.awt.event)

20
THE SWING PACKAGES (contd)
  • javax.swing.plaf
  • classes for providing the LF capabilities
  • also javax.swing.plaf.basic including the default
    LF classes
  • the current specialized LFs
  • javax.swing.plaf.metal
  • javax.swing.plaf.motif (or com.sun.java.swing.plaf
    .motif)
  • javax.swing.plaf.windows (or com.sun.java.swing.pl
    af.windows)
  • also javax.swing.plaf.multi for mixing multiple
    LFs
  • javax.swing.table
  • including support classes for managing tables
  • javax.swing.tree
  • support classes for managing trees

21
THE SWING PACKAGES (contd)
  • javax.swing.text
  • support classes for text editing
  • Document classes
  • JTextComponent (superclass for all text
    components)
  • see also separate format packages
  • javax.swing.text.html
  • javax.swing.text.rtf
  • javax.swing.undo
  • classes for supporting undo/redo operations

22
JComponent
  • An abstract root class of almost all of Swing
    components
  • Provides
  • pluggable LF
  • extensibility
  • smart trapping of keyboard events (see
    javax.swing.KeyStroke)
  • customizable borders
  • easy resizing
  • tool tips
  • autoscrolling
  • support for debugging
  • support for accessibility
  • support for localization

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
Write a Comment
User Comments (0)
About PowerShow.com