75% found this document useful (4 votes)
2K views28 pages

Java Swing: Kumar Harshit, USW

The document discusses Java Swing and provides examples of using different layout managers in Swing. It begins with a simple example of creating a JFrame and then discusses the anatomy of Swing components like JFrame and JPanel. It also provides examples of adding buttons to a frame and handling button click events. Further, it explains how to add menus, toolbars, tooltips and popup menus in Swing. Finally, it describes different layout managers like flow layout, grid layout, border layout and box layout that can be used to arrange components in a Swing application.

Uploaded by

kumarharsh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
75% found this document useful (4 votes)
2K views28 pages

Java Swing: Kumar Harshit, USW

The document discusses Java Swing and provides examples of using different layout managers in Swing. It begins with a simple example of creating a JFrame and then discusses the anatomy of Swing components like JFrame and JPanel. It also provides examples of adding buttons to a frame and handling button click events. Further, it explains how to add menus, toolbars, tooltips and popup menus in Swing. Finally, it describes different layout managers like flow layout, grid layout, border layout and box layout that can be used to arrange components in a Swing application.

Uploaded by

kumarharsh
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 28

Java Swing

Kumar Harshit, USW


A Simple Example

import javax.swing.JFrame;
public class Simple extends JFrame {
public Simple() {
setSize(300, 200);
setTitle("Simple");

setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args) {


Simple simple = new Simple();
simple.setVisible(true);
}
}
Anatomy

 import javax.swing.JFrame;
 This is a top level container, which is used to place other
components.

 setDefaultCloseOperation(EXIT_ON_CLOSE);
 This method will close the window.
Adding Buttons to a Frame
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Buttons extends JFrame {


private Toolkit toolkit;
public Buttons() {
setTitle("Buttons");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
getContentPane().add(panel);
panel.setLayout(null);
JButton beep = new JButton("Beep");
beep.setBounds(150, 60, 80, 30);
//continued….
Adding Buttons - II
beep.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { toolkit.beep(); } });

JButton close = new JButton("Close");


close.setBounds(50, 60, 80, 30);
close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { System.exit(0); } });

panel.add(beep);
panel.add(close);
}

public static void main(String[] args) {


Buttons buttons = new Buttons();
buttons.setVisible(true);
}
}
Anatomy of buttons example

 Three new things to notice


 Add Panel to a Frame
 Layout Management
 Event Handling
Buttons Example – Adding Panel

 JPanel panel = new JPanel();


getContentPane().add(panel);

- We create a panel using JPanel, and then add the panel to the Frame.
- Note that getContentPane() is a method of Jframe class.
- getContentPane() method returns an object of type Container.
- To the returned container object, add a panel, using add method of
Container class.
- Components like textbox, button can be added to the panel
Button Example – Layout
Management

 panel.setLayout(null);
- A layout manager is used for laying out components.
- By default, a panel has FlowLayout Manager.
- setLayout(null) takes off layout manager from the panel. This means, we can
layout components as we wish

 JButton beep = new JButton("Beep");


beep.setBounds(150, 60, 80, 30);
panel.add(beep);
- 1st line, creates a button.
- 2nd line, places a button on the panel using setBounds method.
- 3rd line, adds a button to the panel.
Button Example – Event Handling

 beep.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
toolkit.beep();
}
});
- ActionListener is an interface, and is a sub-interface of EventListener.
- Above is an example of inner-class
- We are creating a class which has no name, but it implements ActionListener interface.
Inorder to do so, it also provides implementation for the actionPerformed() method.
- addActionLisener(), adds a Listener to the beep button.
- To make the above example easier, please see next slide.
Button Example – Event Handling

beep.addActionListener(new ButtonActionListener());

class ButtonActionListener implements ActionListener{


public void actionPerformed(ActionEvent event){
System.out.println("beep called");
}
}

- Create a new class ButtonActionListener, which implemetns Action Listener.


- beep.addActionListener(new ButtonActionListener)
- this line adds a listener to the beep button, if an event occurs, an object of
ButtonActionListener is created, and actionPerformed() method is invoked
Adding Tooltip

 Inthe previous example, add the following


code
– button.setToolTipText("A button component");
Menu and Toolbars

 To implement a menu-bar, use three classes


– JMenubar
– JMenu
– JMenuItem
How Menu Works

 JMenuBar menubar = new JMenuBar();


 Create an object of type JMenuBar

 JMenu file = new JMenu("File");


 Create an object of type JMenu
 JMenuItem fileClose = new JMenuItem("Close", icon);

Create an object of type JMenuItem

 file.add(fileClose);
 Add menu-item to the menu.
 menubar.add(file);
 Add menu to the MenuBar object.
 setJMenuBar(menubar);
 Add menuBar to the Frame.
Menu - Code
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

public class Menu extends JFrame {


public Menu() {
setTitle("JMenuBar");
JMenuBar menubar = new JMenuBar();
ImageIcon icon = new ImageIcon("exit.png");
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);

//continued….. Next slide


Menu – Code – Contd….
JMenuItem fileClose = new JMenuItem("Close", icon);
fileClose.setMnemonic(KeyEvent.VK_C);
fileClose.setToolTipText("Exit application");
fileClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
});
file.add(fileClose);
menubar.add(file);
setJMenuBar(menubar);
setSize(250, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Menu();
}
}
SubMenu and Separator

 JMenuBar menubar = new JMenuBar();


 JMenu file = new JMenu("File");
 JMenu imp = new JMenu("Import");
 Imp.add(new JMenuItem(“import new feed….”));
 Imp.add(new JMenuItem(“import bookmarks….”));
– Here file and imp are both menu and contain further menu-items.
 file.add(new JMenuItem("New", iconNew));
 file.add(new JMenuItem(“Open", iconNew));
 file.addSeparator()
– This adds a separator after new and open, which are menu-items of file.
 file.add(imp);
– This adds a sub-menu to the File Menu, as shown in fig.
How to create a PopUp Menu

 menu = new JPopupMenu();


 JMenuItem menuItemBeep = new JMenuItem("Beep");
 menu.add(menuItemBeep);
 frame.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
menu.show(e.getComponent(), e.getX(),
e.getY()); }}});
Swing Layout Management

 No Manager
 Flowlayout Manager
 Gridlayout Manager
 Borderlayout Manager
 Boxlayout Manager
No Layout Manager

 This mean no layout manager is used.


 Components are laid out using explicit
values.
 Example on slide 3.
FlowLayout Manager

 The manager puts component in a row, in


the order they are added.
 If they don’t fit in a row, they are appended
on the next row.
 The components can be added left to right or
vice versa.
 Three constructors
– FlowLayout() //by default, centered, 5px spaces
– FlowLayout(int align)
– FlowLayout(int align, int hgap, int vgap)
Example of FlowLayout Manager
public class FlowLayoutExample extends JFrame {
public FlowLayoutExample() {
setTitle("FlowLayout Example");
JPanel panel = new JPanel();
JTextArea area = new JTextArea("text area");
area.setPreferredSize(new Dimension(100, 100));
JButton button = new JButton("button");
panel.add(button);
JTree tree = new JTree();
panel.add(tree);
panel.add(area);
add(panel);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true); }
public static void main(String[] args) { new FlowLayoutExample(); } }
Grid Layout Manager

 Itmakes a grid, and lays out components in


that grid.
 One component is placed in each rectangle.
Example: Grid Layout Manager

 Get a panel object


– JPanel p = new JPanel()
 Create grid layout manager
– GridLayout gl = new GridLayout()
 Add gridlayout to the panel
– p.setLayout(gl)
 Constructor
– GridLayout(int rows, int cols, int hgap, int vgap)
Example – Grid Layout Manager

public class GridLayoutExample extends JFrame {


public GridLayoutExample() {
setTitle("GridLayout");
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
panel.setLayout(new GridLayout(5, 4, 5, 5));
String[] buttons = { "Cls", "Bck", "", "Close", "7", "8", "9", "/", "4", "5", "6", "*", "1", "2",
"3", "-", "0", ".", "=", "+" };
for (int i = 0; i < buttons.length; i++) {
if (i == 2) panel.add(new JLabel(buttons[i]));
else panel.add(new JButton(buttons[i]));
}
add(panel);
setSize(350, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true); }
Border Layout Manager

 Divides spaces into 5 regions


– North, West, South, East, and Centre
 Can add only one component in one region
 If we want to add more than one component
in one reigion, then add a panel to that
region
Example: Border Layout
public class BorderLayoutExample extends JFrame {
public BorderLayoutExample() {
setTitle("BorderLayout");
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
menubar.add(file);
setJMenuBar(menubar);
JToolBar toolbar = new JToolBar();
toolbar.setFloatable(false);
ImageIcon exit = new ImageIcon("exit.png");
JButton bexit = new JButton(exit);
bexit.setBorder(new EmptyBorder(0 ,0, 0, 0));
toolbar.add(bexit);
add(toolbar, BorderLayout.NORTH);

//contd…
Example: Border Layout – Contd..
JToolBar vertical = new JToolBar(JToolBar.VERTICAL);
vertical.setFloatable(false);
vertical.setMargin(new Insets(10, 5, 5, 5));
ImageIcon select = new ImageIcon("drive.png");
ImageIcon freehand = new ImageIcon("computer.png");
ImageIcon shapeed = new ImageIcon("printer.png");
JButton selectb = new JButton(select);
selectb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton freehandb = new JButton(freehand);
freehandb.setBorder(new EmptyBorder(3, 0, 3, 0));
JButton shapeedb = new JButton(shapeed);
shapeedb.setBorder(new EmptyBorder(3, 0, 3, 0));
vertical.add(selectb);
vertical.add(freehandb);
vertical.add(shapeedb);
//contd…
Example: Border Layout – Contd..
add(vertical, BorderLayout.WEST);
add(new JTextArea(), BorderLayout.CENTER);
JLabel statusbar = new JLabel(" Statusbar");
statusbar.setPreferredSize(new Dimension(-1, 22));
statusbar.setBorder(LineBorder.createGrayLineBorder());
add(statusbar, BorderLayout.SOUTH);
setSize(350, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new BorderLayoutExample();
}
}

You might also like