Introduction to Java Swing
Swing is a Java Foundation Classes [JFC] library and an extension of the
Abstract Window Toolkit [AWT].
Java Swing offers much-improved functionality over AWT, new components,
expanded components features, and excellent event handling with drag-and-
drop support.
Difference between Java Swing and Java AWT
There are certain points from which Java Swing is different than Java AWT as
mentioned below:
Java AWT Java Swing
Swing is a part of Java Foundation
Java AWT is an API to develop GUI
Classes and is used to create various
applications in Java.
applications.
Components of AWT are heavy The components of Java Swing are
weighted. lightweight.
Components are platform dependent. Components are platform independent.
Execution Time is more than Swing. Execution Time is less than AWT.
AWT components require java.awt Swing components requires javax.swing
package. package.
.
What is JFC?
JFC stands for Java Foundation Classes. JFC is the set of GUI components that
simplify desktop Applications. Many programmers think that JFC and Swing are one
and the same thing, but that is not so. JFC contains Swing [A UI component package]
and quite a number of other items:
Features Of Swing Class
Pluggable look and feel.
Uses MVC architecture.
Lightweight Components
Platform Independent
Advanced features such as JTable, JTabbedPane, JScollPane, etc.
Java is a platform-independent language and runs on any client machine, the GUI
look and feel, owned and delivered by a platform-specific O/S, simply does not
affect an application’s GUI constructed using Swing components.
Lightweight Components: Starting with the JDK 1.1, its AWT-supported
lightweight component development. For a component to qualify as lightweight, it
must not depend on any non-Java [O/s based) system classes. Swing components
have their own view supported by Java’s look and feel classes.
Pluggable Look and Feel: This feature enable the user to switch the look and feel
of Swing components without restarting an application. The Swing library
supports components’ look and feels that remain the same across all platforms
wherever the program runs. The Swing library provides an API that gives real
flexibility in determining the look and feel of the GUI of an application
Highly customizable – Swing controls can be customized in a very easy way as
visual appearance is independent of internal representation.
Rich controls– Swing provides a rich set of advanced controls like Tree
TabbedPane, slider, colorpicker, and table controls.
Swing Classes Hierarchy
The MVC Connection
In general, a visual component is a composite of three distinct aspects:
1. The way that the component looks when rendered on the screen.
2. The way such that the component reacts to the user.
3. The state information associated with the component.
Over the years, one component architecture has proven itself to be exceptionally
effective: – Model-View-Controller or MVC for short.
In MVC terminology, the model corresponds to the state information associated
with the Component.
The view determines how the component is displayed on the screen, including any
aspects of the view that are affected by the current state of the model.
The controller determines how the component reacts to the user.
The simplest Swing components have capabilities far beyond AWT components
as follows:
Swing buttons and labels can be displaying images instead of or in addition to text.
The borders around most Swing components can be changed easily. For example,
it is easy to put a 1-pixel border around the outside of a Swing label.
Swing components do not have to be rectangular. Buttons, for example, can be
round.
Now The Latest Assertive technologies such as screen readers can easily get
information from Swing components. Example: A screen reader tool can easily
capture the text that is displayed on a Swing button or label.
Example of Java Swing Programs
Example 1: Develop a program using label (swing) to display the message “GFG WEB
Site Click”:
Java
// Java program using label (swing)
// to display the message “GFG WEB Site Click”
import java.io.*;
import javax.swing.*;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
// Creating instance of JFrame
JFrame frame = new JFrame();
// Creating instance of JButton
JButton button = new JButton(" GFG WebSite Click");
// x axis, y axis, width, height
button.setBounds(150, 200, 220, 50);
// adding button in JFrame
frame.add(button);
// 400 width and 500 height
frame.setSize(500, 600);
// using no layout managers
frame.setLayout(null);
// making the frame visible
frame.setVisible(true);
Output:
Example 2: Write a program to create three buttons with caption OK, SUBMIT,
CANCEL.
Java
// Java program to create three buttons
// with caption OK, SUBMIT, CANCEL
import java.awt.*;
class button {
button()
Frame f = new Frame();
// Button 1 created
// OK button
Button b1 = new Button("OK");
b1.setBounds(100, 50, 50, 50);
f.add(b1);
// Button 2 created
// Submit button
Button b2 = new Button("SUBMIT");
b2.setBounds(100, 101, 50, 50);
f.add(b2);
// Button 3 created
// Cancel button
Button b3 = new Button("CANCEL");
b3.setBounds(100, 150, 80, 50);
f.add(b3);
f.setSize(500, 500);
f.setLayout(null);
f.setVisible(true);
public static void main(String a[]) { new button(); }
Output:
Example 3: Program to Add Checkbox in the Frame
Java
// Java Swing Program to Add Checkbox
// in the Frame
import java.awt.*;
// Driver Class
class Lan {
// Main Function
Lan()
// Frame Created
Frame f = new Frame();
Label l1 = new Label("Select known Languages");
l1.setBounds(100, 50, 120, 80);
f.add(l1);
// CheckBox created
Checkbox c2 = new Checkbox("Hindi");
c2.setBounds(100, 150, 50, 50);
f.add(c2);
// CheckBox created
Checkbox c3 = new Checkbox("English");
c3.setBounds(100, 200, 80, 50);
f.add(c3);
// CheckBox created
Checkbox c4 = new Checkbox("marathi");
c4.setBounds(100, 250, 80, 50);
f.add(c4);
f.setSize(500, 500);
f.setLayout(null);
f.setVisible(true);
public static void main(String ar[]) { new Lan(); }
Output:
Components of Swing Class the task’s percentage
Class Description
A Component is the Abstract base class
for about the non-menu user-interface
Component controls of Java SWING. Components
are representing an object with a
graphical representation.
A Container is a component that can
Container
container Java SWING Components
JComponent A JComponent is a base class for all
swing UI Components In order to use a
swing component that inherits from
JComponent, the component must be in
Class Description
a containment hierarchy whose root is a
top-level Java Swing container.
A JLabel is an object component for
JLabel
placing text in a container.
JButton This class creates a labeled button.
A JColorChooser provides a pane of
JColorChooser controls designed to allow the user to
manipulate and select a color.
A JCheckBox is a graphical (GUI)
JCheckBox component that can be in either an on-
(true) or off-(false) state.
The JRadioButton class is a graphical
(GUI) component that can be in either
JRadioButton
an on-(true) or off-(false) state. in the
group
A JList component represents the user
JList
with the scrolling list of text items.
A JComboBox component is Presents
JComboBox the User with a show up Menu of
choices.
A JTextField object is a text component
JTextField that will allow for the editing of a single
line of text.
A JPasswordField object it is a text
JPasswordField component specialized for password
entry.
A JTextArea object is a text component
JTextArea that allows for the editing of multiple
lines of text.
Class Description
A ImageIcon control is an
Imagelcon implementation of the Icon interface
that paints Icons from Images
A JScrollbar control represents a scroll
JScrollbar bar component in order to enable users
to Select from range values.
JOptionPane provides set of standard
JOptionPane dialog boxes that prompt users for a
value or Something.
A JFileChooser it Controls represents a
JFileChooser dialog window from which the user can
select a file.
As the task progresses towards
JProgressBar completion, the progress bar displays
the tasks percentage on its completion.
A JSlider this class is letting the user
graphically (GUI) select by using a
JSlider
value by sliding a knob within a
bounded interval.
A JSpinner this class is a single line
input where the field that lets the user
JSpinner
select by using a number or an object
value from an ordered sequence.