swing tutorial

28
1  A Quick Java  A Quick Java Swing Tutorial Swing Tutorial

Upload: radha-raman

Post on 06-Apr-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 1/28

1

 A Quick Java A Quick JavaSwing TutorialSwing Tutorial

Page 2: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 2/28

2

IntroductionIntroduction

Swing ± A set of GUI classes

 ± Part of the Java's standard library

 ± Much better than the previous library: AWT

Abstract Window Toolkit

Highlights

 ± A rich set of widgets

Widget: Any GUI element (also called: components)

 ± Contents and shape are separated (MVC support)

 ± Fine-grained control over the behavior and look and feel

 ± Platform independent

Isolates the programmer from the operating system's GUI 

Page 3: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 3/28

3

Swing ComponentsSwing Components

Containers

 ± Contain and manage other components.

 ± Top Level/ Internal

 ± Examples: JFrame (Top Level), JScrollPane, JPanel.

Basic controls

 ± Atomic components

 ± Used for showing ouput and/or getting some input

 ± Inherits JComponent

 ± Examples: JButton, JLabel, JTextArea, JTable,Jlist

Usually every Swing class extends the corresponding AWT class

 ± For backward-compatibility reasons

Page 4: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 4/28

4

My First Swing ProgramMy First Swing Programimport javax.swing.*;import java.awt.BorderLayout;

 public class First { public static void main(String[] args) {

JFrame frame = new JFrame("My First Frame");

// operation to do when the window is closed.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(new JLabel("I Love Swing"),

BorderLayout.CENTER);

frame.pack();frame.setVisible(true);

}}

Page 5: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 5/28

5

Top Level Containers: JDialogTop Level Containers: JDialog

javax.swing.JDialog: ± More simple and limited than frames ± Typically used for showing a short message on the screen ± Also has a border and a title bar  ± May have an owner 

If the owner is invisible the dialog will also be invisible

 ± Use the static method of JoptionPane to show standard dialog boxes:JOptionPane.showMessageDialog(null, "4+2=6");

Page 6: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 6/28

6

Top Level Containers: JFileChooser Top Level Containers: JFileChooser 

javax.swing.JFileChooser: ± Allows the the user to choose a file

 ± Supports ³open´ and ³save´: showOpenDialog(),showSaveDialog() 

JFileChooser fc = new JFileChooser();int returnVal = fc.showOpenDialog(null);if(returnVal == JFileChooser.APPROVE_OPTION)

System.out.println("File: " + fc.getSelectedFile());

Page 7: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 7/28

7

Top Level Containers: JFrameTop Level Containers: JFrame

javax.swing.JFrame: ± Top-level window with a title and a border. ± Usually used as a program's main window

Page 8: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 8/28

8

More on JFrameMore on JFrame

Made of several layers

Widgets are added to the Content Pane layer.

 ± Use getContentPane() to obtain it

Other layers are used for customizing the window'sappearence

Page 9: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 9/28

9

Internal ContainersInternal Containers

Not Top level containers

Can contain other non-top level components

Examples:± JScrollPane: Provides a scrollable view of its

components

± JSplitPane: Separates two components

± JTabbedPane: User chooses whichcomponent to see

Page 10: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 10/28

10

ContainersContainers -- LayoutLayout

Each container has a layout manager 

 ± Determines the size, location of contained widgets.

Setting the current layout of a container:void setLayout(LayoutManager lm)

LayoutManager implementing classes:± BorderLayout

± BoxLayout± FlowLayout

± GridLayout

Page 11: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 11/28

11

ContainersContainers -- LayoutLayout

Page 12: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 12/28

12

Swing ComponentsSwing Components

Page 13: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 13/28

13

Swing ComponentsSwing Components

Page 14: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 14/28

14

First Swing Program RevisitedFirst Swing Program Revisited

import javax.swing.*;import java.awt.BorderLayout;

 public class First { public static void main(String[] args) {

JFrame frame = new JFrame("My First Frame");

// operation to do when the window is closed.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(new JLabel("I Love Swing"),

BorderLayout.CENTER);frame.pack();frame.setVisible(true);

}}

Create a frame

Create a textlabel

 Add the label tothe content pane

Choose the border layout

Specify CENTERas the layout

position

Page 15: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 15/28

15

InputInput

So we now know how to present widgets on the screen

A program also needs to react to the user's actions

Examples: ± When the user presses a button we want to save a file

 ± When the user closes the program we want to ask ³are yousure?´

 ± ...

Swing mechanism: Events and Listeners

Page 16: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 16/28

16

Events, ListenersEvents, Listeners Swing defines all sorts of Listener interfaces

 ± E.g.: ActionListener, MouseMotionListener,WindowListener, ...

 public interface ActionListener extends EventListener {

 public void actionPerformed(ActionEvent e);

}

 public interface MouseMotionListener extends EventListener {

 public void mouseDragged(MouseEvent e);

 public void mouseMoved(MouseEvent e);

}

There are default (empty) implementations for many of the listeners

 ± E.g.: MouseMotionAdapter, WindowAdapter 

Page 17: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 17/28

17

Events, Listeners (cont.)Events, Listeners (cont.)

A listener is an object that implements a listener interface

If we need to react to an event (on a certain widget) we register alistener object with that widget

E.g.: addActionListener() registers an action listener with its receiver:

JButton button = new JButton(); ActionListener listener = ...; button.addActionListener(listener);

When an event occurs, all registered listeners are notified

 ± The appropriate listener method (e.g: actionPerformed()) is

invoked

 ± An object describing the event is passed as a parameter 

Page 18: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 18/28

18

Event Handling Demo: GUIEvent Handling Demo: GUI

Page 19: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 19/28

19

Event Handling Demo: CodeEvent Handling Demo: Codeimport javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 public class Events implements ActionListener {

 public Events() {

JFrame frame = new JFrame("Events");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new FlowLayout());JButton b = new JButton("Click me!");

b.addActionListener(this);

frame.getContentPane().add(b);

frame.pack();

frame.setVisible(true);

} public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null, "Thank you");

}

 public static void main(String[] args) { new Events(); }

}

Page 20: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 20/28

20

Inner ClassesInner Classes

Nested within another classes

Instance specific: ± Has access to methods & fields of the object that

created it ± => An inner class has TWO this variables

Can be static ± Can access only static members and methods only

 ± A static method cannot create a non-static inner class

Page 21: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 21/28

21

Local ClassesLocal Classes

Same as inner classes but defined inside a method

Has access to local variables of the enclosing method

 ± Only if the variable is defined as final

Can be anonymous

 ± Doesn¶t have a name.

Page 22: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 22/28

22

Event Handling Demo: Local ClassEvent Handling Demo: Local Classimport javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 public class Events {

 public Events() {

JFrame frame = new JFrame("Events");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new FlowLayout());

JButton b = new JButton("Click me!");b.addActionListener(new ActionListener() {

 public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null, "Thank you");

}

});

frame.getContentPane().add(b);

frame.pack();

frame.setVisible(true);

}

 public static void main(String[] args) { new Events(); }

}

Page 23: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 23/28

23

 Accessing Fields of Enclosing Object Accessing Fields of Enclosing Object

 public class A {int x = 0;

 public void f() {

B b = new B();b.g();

System.out.println(x); // Output: 5}

 public class B { public void g() { x = 5; }

}

 public static void main(String[] args) {

new A().f();

}}

Page 24: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 24/28

24

Using the Second this VariableUsing the Second this Variable

 public class A { public void f() {

B b = new B();

System.out.println(b.g()); // Output: 1024}

 public int g() { return 512; }

 public class B { public int g() { return A.this.g() * 2; }

}

 public static void main(String[] args) {

new A().f();

}}

Page 25: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 25/28

25

 Appendix: Appendix:Contact Book ProgramContact Book Program

Page 26: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 26/28

26

Swing's JTableSwing's JTable

Each JTable has a TableModel object that holds thedata shown by the table.

DefaultTableModel is a default implementation of TableModel

 ± By default it makes all the cells editable

We can customize its behavior by subclassing

 ± Or we can implement TableModel from scratch

T ableModelListener - a listener interface ± Notified of changes in the model

Use TableModel.addTableModelListener() to register alistener object

Page 27: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 27/28

27

Contacts Book example overviewContacts Book example overview

Each contact has a name and a list of attributes ± Each attribute has a name and a value.

Operations: ± Add contact

Contact name is immutable

 ± Add attributes Attribute is identified by it¶s name, the attribute name is immutable, it¶s valuecan be changed

Classes:± Contact: represents a contact and maintains list of attributes± Contact.Attribute: Inner class that represents contact attribute.± ContactTableModel: model class for the table data

Doesn¶t allow to modify attribute names± ContactBook: represents the contact book widget.

Page 28: Swing Tutorial

8/3/2019 Swing Tutorial

http://slidepdf.com/reader/full/swing-tutorial 28/28

28

Contacts Book example overviewContacts Book example overview