0% found this document useful (0 votes)
80 views

GUI Programming: Introduction To Swing

This document provides an introduction to GUI programming using Swing in Java. It discusses the history of Java's AWT and how Swing improved upon it. It also outlines the basic concepts of building a GUI with Swing, including using containers and components, different layout managers, menus, dialog boxes and frames. The key aspects covered are how to structure the user interface, write application logic and tie everything together with event handling.

Uploaded by

Geay Peter
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views

GUI Programming: Introduction To Swing

This document provides an introduction to GUI programming using Swing in Java. It discusses the history of Java's AWT and how Swing improved upon it. It also outlines the basic concepts of building a GUI with Swing, including using containers and components, different layout managers, menus, dialog boxes and frames. The key aspects covered are how to structure the user interface, write application logic and tie everything together with event handling.

Uploaded by

Geay Peter
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 26

GUI Programming

Introduction to Swing
Overview
• Java AWT/Swing
– Brief history, introduction to the main packages
• Fundamentals of Swing (Part 1, this lesson)
– Containers
– Components
– Layouts
• Fundamental of Swing (Part 2, next lesson)
– Event-driven programming
• Applets (Part 3, last lesson)
– Writing, and deploying applets
Java AWT
• Abstract Windowing Toolkit
• Original Java GUI API
• Very limited in capability
– Few components
– API not well structured, particularly event
handling for user actions
– Not entirely portable (used native widgets)
JFC/Swing
• Java Foundation Classes (or “Swing”)
– Replacement for AWT (although does share some classes)
– Also provide basis for developing new GUI features (which
are being continually added)
• What does Swing include?
– 100% Java
– Swing components (more, and more sophisticated)
– Pluggable Look and Feel Support
– Accessibility API
– Better graphics support (Java 2D)
– Drag and Drop
JFC/Swing
• Disadvantages
– Can be slow (resource hungry)
– Large complex API (big learning curve)
– Many features best suited for GUI builders, IDEs
• Aim of the next few lectures is to introduce the
basic concepts
– Provide you with background so can continue studies
yourself
• Important to use Swing and not AWT
– Swing is the recommended way to build Java GUIs
Introduction to GUI
Programming
• What are the stages in building a GUI application?
• Design the user interface
– Organising pre-built GUI components to build windows,
dialogs
– E.g buttons, tables, menus, etc
• Writing the application logic
– What does the application do?
• Writing event-handling code to tie the GUI
components to the application logic
– More on event-handling in next lesson…
Introduction to GUI
Programming
• Essentially, JFC/Swing provides a framework which
consists of:
– A number of GUI components that can be used to build a
user interface (javax.swing)
– An event-handling framework for tying user actions to
application code (javax.swing.event)
• Occasionally use classes from the AWT equivalents
(java.awt, java.awt.event)
– Some Swing classes inherit from originals
– Distinguish Swing versions from AWT versions with “J”
prefix.
Building a GUI
• A GUI is built in layers.
• Bottom most layer is the window (Container)
– Contains all other components
– Can provide basic features like maximise/minimise buttons, title bar,
menu bar, etc
• On top of this are layered (Component)
– Components, e.g. buttons, text fields
– or intermediate containers, e.g. panels
• Arrangement of components in a contained is handled by a
layout manager
– Its job is to instruct components on how to arrange themselves so the
GUI is drawn correctly.
Building a GUI
Simple Application X

OK A Label

Cancel Text field…


The containment hierarchy
• This layered GUI can be viewed as a
hierarchy of components
– NOT an inheritance hierarchy,
– It just describes how components are nested
one within another
The containment hierarchy
JFrame

JButton JButton JPanel

JLabel JTextField
Swing Top level containers
• JWindow
– Basic no frills window, just a square on the screen
– WindowExample.java
• JFrame
– The basic Swing window. Offers basic window controls,
resizable
– FrameExample.java
• JDialog
– For building dialog boxes, e.g. File open/save
– DialogExample.java
• JApplet
– For building applets, embedded into a web page
– To be covered later
Simple Dialogs
• A dialog is a special window to convey a
message or provides a special function
• Every dialog is dependent on a frame – when
that frame is destroyed, so are its dependent
dialogs
• A modal dialog blocks user input to all other
windows in the program
Dialog Boxes
• Used by applications to interact with the
user
• Provided by Java’s JOptionPane class
– Contains input dialogs and message dialogs
• Example: Addition.java
• Read more:
http://download.oracle.com/javase/tutorial/u
iswing/components/dialog.html
Working with JFrames
• Many different possibilities, but the basics
include:
– Setting window title
– Setting location on screen
– Setting size of window
– Restricting resizes
– Set close operation (exit the program), as by
default it does nothing.
– Read more:
http://download.oracle.com/javase/tutorial/uiswi
ng/components/frame.html
Working with JFrames
• FrameEx1.java
Adding Components to a Frame
• A JFrame has several areas
– Window decorations
– (Optional) Menu bar
– Content pane
• Content pane is where components are added.
– Content pane is a Container object
– Obtain reference to the content pane, and then add another
component to it
JFrame frame = new JFrame(“Example”);
JButton button = new JButton(“Click me!”);
frame.getContentPane().add( button );
Adding Components to a Frame
• JFrameAndButton.java
• JFrameAndPanel.java
Adding Components
• Very common to extend the Swing components,
particularly JFrame
– Create your own specialised versions
– May include a fixed set of components
– Provide extra methods for working with those
components, etc.
– Encapsulates how the GUI is constructed
• Slightly different to Visual Basic where one tends
to just use the basic components
Layout Managers
• Responsible for layout out (arranging)
components in a Container
• Several different types with different uses
• None of them provide for precise x-y
alignment, unlike VB forms
Border Layout
• This is the default layout for JFrame
• Divides the content pane into 5 areas (north, south, east,
west, center)
• Areas are expanded/contracted as needed, along with
their contents.
– Therefore ignores preferred size of the components.
• Center is the default if not specified.
• Adding two components to the same zone means they get
added one on top of the other
– Instead add the components to a JPanel, and then add that
instead.
Border Layout
X

NORTH

WEST CENTER EAST

SOUTH
Grid Layout
• Divides the container into a rectangular grid
– Configurable number rows/columns
• Each grid location is of equal size, one
component assigned to each.
• Automatically assigns components to next
available location
Other layout managers
• Flow Layout (default for JPanel)
– Arranges components left-to-right
– Used to arrange buttons on a panel
• Card Layout
– Arranges components like a deck of cards
– Only one card visible at a time
• Box Layout, Grid Bag Layout
– Very sophisticated managers, used by GUI builders for
very precise GUI designs.
– Not recommended for hand use!
Menus
• A Jframe can have only a single menu bar
– Instance of the Jmenu object
• A menu bar can have several menus on it
– Instances of the Jmenu object
• A menu can have several items on it
– Instances of the JmenuItem object
• Example
Other Swing Components
• SwingSet Demo

You might also like