41
Graphical User Interface (GUI) II

Graphical User Interface (GUI) - 2

  • Upload
    prn-usm

  • View
    1.015

  • Download
    7

Embed Size (px)

DESCRIPTION

Chapter 11-2

Citation preview

Page 1: Graphical User Interface (GUI) - 2

Graphical User Interface (GUI) IIGraphical User

Interface (GUI) II

Page 2: Graphical User Interface (GUI) - 2

Objectives

Differentiate the use of event handling for each component.

Apply appropriate event handling based on given problem.

Transform program from java application to java applet and vice versa.

Page 3: Graphical User Interface (GUI) - 2

Event-Driven Programming

In event-driven programming, code is executed upon activation of events.

Ex: a button click, or mouse movement

3

Page 4: Graphical User Interface (GUI) - 2

Events and Event Source An event can be defined as a type of signal to the

program that something has happened.

The event is generated by external user actions such as mouse movements, mouse button clicks, and keystrokes, or by the operating system, such as a timer.

The component on which an event is generated is called the source object.

Ex: source object: Button for a button-clicking action event.

4

Page 5: Graphical User Interface (GUI) - 2

Event Classes

Subclasses an event is an object of the EventObject class

Page 6: Graphical User Interface (GUI) - 2

Event Information An event object contains whatever properties are pertinent to the event.

You can identify the source object of the event using the getSource() instance method in the EventObject class.

The subclasses of EventObject deal with special types of events, such as button actions, window events, component events, mouse movements, and keystrokes.

6

Page 7: Graphical User Interface (GUI) - 2

Selected User Actions

7

Source Event TypeUser Action Object Generated

Click a button JButton ActionEvent

Click a check box JCheckBox ItemEvent, ActionEvent

Click a radio button JRadioButton ItemEvent, ActionEvent

Press Enter on a text field JTextField ActionEvent

Select a new item JComboBox ItemEvent, ActionEvent

Select item(s) JList ListSelectionEvent

Select a menu item JMenuItem ActionEvent

Window opened, closed, etc. Window WindowEvent

Mouse pressed, released, etc. Component MouseEvent

Key released, pressed, etc. Component KeyEvent

In detail, refer to Table 16.1 pg 559

Page 8: Graphical User Interface (GUI) - 2

Listeners, Registartions, and Handling Events

Java uses a delegation-based model for event handling

An external user action on a source object triggers an event An object interested in the event receives the event The latter object is called a listener

8

Page 9: Graphical User Interface (GUI) - 2

Listeners, Registrations, and Handling Events

Two things are needed for an object to be a listener for an event on a source object:1. The listener object’s class must implement the corresponding event-

listener interface. Java provides a listener interface for every type of GUI event.

The listener interface is usually named XListener for XEvent ,

Ex: Listener interface for ActionEvent is ActionListener

each listener for ActionEvent should implement the ActionListener interface

9

Page 10: Graphical User Interface (GUI) - 2

Selected Event Handlers

10

Event Class Listener Interface Listener Methods (Handlers)ActionEvent ActionListener actionPerformed(ActionEvent)ItemEvent ItemListener itemStateChanged(ItemEvent)WindowEvent WindowListener windowClosing(WindowEvent)

windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)

ContainerEvent ContainerListener componentAdded(ContainerEvent)componentRemoved(ContainerEvent)

MouseEvent MouseListener mousePressed(MouseEvent)mouseReleased(MouseEvent)

mouseClicked(MouseEvent) mouseExited(MouseEvent) mouseEntered(MouseEvent)KeyEvent KeyListener keyPressed(KeyEvent)

keyReleased(KeyEvent) keyTypeed(KeyEvent)

In detail, refer to Table 16.2 pg 561

Page 11: Graphical User Interface (GUI) - 2

Listeners, Registrations, and Handling Events

Two things are needed for an object to be a listener for an event on a source object:2. The listener object must be registered by the source object. Registration

methods are dependent on the event type

Ex: For ActionEvent, the method is addActionListener

In general: the method is named addXListener for XEvent

11

Page 12: Graphical User Interface (GUI) - 2

Listeners, Registrations, and Handling Events

For each event, the source object maintains a list of listeners and notifies all the registered listeners by invoking the handler on the listener object to respond to the event.

12

Page 13: Graphical User Interface (GUI) - 2

The Delegation Model: Example

13

source: JButton

+addActionListener(ActionListener listener)

listener: ListenerClass

ActionListener

+actionPerformed(ActionEvent event)

Register by invoking source.addActionListener(listener);

ListenerClass listener = new ListenerClass();

JButton jbt = new JButton("OK");

jbt.addActionListener(listener);

class ListenerClass implements ActionListener {

public void actionPerformed(ActionEvent e) {

S.o.p (“Button “+ e.getActionCommand()+ “ is clicked.”);}

Page 14: Graphical User Interface (GUI) - 2

Example:

Class must implement the listener interface (ex: ActionListener). and method to handle the event (ex: actionPerformed())

The listener object must register with source object (ex: button) Done by invoking the addActionListener in the button object

Ex::

public class TestActionButton extends JFrame implements ActionListener{

JButton btn = new JButton(“Click Here"); btn.addActionListener(this); public void actionPerformed(ActionEvent e) { }}

Registration method (XEvent addXListener)

Page 15: Graphical User Interface (GUI) - 2

ActionEvent

The components that involved with this event are: JButton – clicka a button JMenuItem – select a menu item JTextField – press return on a text field

Event listener interface – ActionListener

Event handler method

public void actionPerformed(ActionEvent e)

Page 16: Graphical User Interface (GUI) - 2

java.awt.event.ActionEvent

16

java.awt.event.ActionEvent

+getActionCommand(): String

+getModifier(): int

+getWhen(): long

Returns the command string associated with this action. For a button, its text is the command string.

Returns the modifier keys held down during this action event.

Returns the timestamp when this event occurred. The time is the number of milliseconds since January 1, 1970, 00:00:00 GMT.

java.util.EventObject

+getSource(): Object

Returns the object on which the event initially occurred.

java.awt.event.AWTEvent

Page 17: Graphical User Interface (GUI) - 2

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

public class UjiActionButang extends JFrame implements ActionListener{ JButton btg = new JButton("Sila Klik"); JTextField txtField = new JTextField(10); JLabel lbl = new JLabel(" ");

public UjiActionButang() { super("Melaksanakan ActionEvent"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); bekas.add(btg); btg.addActionListener(this); bekas.add(txtField); bekas.add(lbl); setSize(300,200); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) { lbl.setText("Terima Kasih"); txtField.setText("Sama-sama"); } } public static void main(String[] arg) { UjiActionButang teks = new UjiActionButang(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

To display label, and text on text field when button is clicked

Page 18: Graphical User Interface (GUI) - 2

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

public class ActionTextField extends JFrame implements ActionListener{ JLabel lbl = new JLabel("Nama "); JTextField txtField = new JTextField(10); public ActionTextField() { super("Melaksanakan ActionEvent- TextField"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); bekas.add(lbl); bekas.add(txtField); txtField.addActionListener(this); setSize(300,200); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== txtField) { JOptionPane.showMessageDialog(this,"Nama anda = "+ txtField.getText(),"Pemberitahuan", JOptionPane.INFORMATION_MESSAGE); } } public static void main(String[] arg) { ActionTextField teks = new ActionTextField(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

To display name from text field on dialog box

when pressing <enter> on text field

Page 19: Graphical User Interface (GUI) - 2

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

public class ActionButton extends JFrame implements ActionListener{ JLabel lbl = new JLabel("Nama "); JTextField txtField = new JTextField(10); JButton btg = new JButton("Klik"); JTextArea txtArea = new JTextArea("Ali",10,6); public ActionButton() { super("Melaksanakan ActionEvent- Butang"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); bekas.add(lbl); bekas.add(txtField); bekas.add(btg); bekas.add(txtArea); btg.addActionListener(this); setSize(300,200); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) { txtArea.append("\n"+txtField.getText()); } } public static void main(String[] arg) { ActionButton teks = new ActionButton(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

To append text on text area when button is clicked

Page 20: Graphical User Interface (GUI) - 2

import java.awt.*;import javax.swing.*;import java.awt.event.*;public class UjiActionMenu extends JFrame implements ActionListener{ JFrame frame = new JFrame(); JMenuBar jmb = new JMenuBar(); JMenu fileMenu = new JMenu("File"); JMenuItem baru= new JMenuItem("New"); JMenuItem buka= new JMenuItem("Open");

public UjiActionMenu() { frame.setTitle("membuat menu"); baru.addActionListener(this); fileMenu.add(baru); fileMenu.add(buka); jmb.add(fileMenu); frame.setJMenuBar(jmb); frame.setSize(400,200); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == baru) JOptionPane.showMessageDialog(this,"Anda telah memilih menu New", "Pemberitahuan",JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] arg) { UjiActionMenu teks = new UjiActionMenu(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }} Display dialog box when menu item is clicked

Page 21: Graphical User Interface (GUI) - 2

comboBox

Generate two types of event ActionEvent ItemEvent

For the case of ItemEvent: Event listener Interface : ItemListener Event handler method public void ItemStateChanged(ItemEvent e)

○ When select an item in the combo box

Index for the first item in the combo box will be started by 0..n-1.

Page 22: Graphical User Interface (GUI) - 2

comboBox

javax.swing.JComboBox

+JComboBox()

+JComboBox(items: Object[])

+addItem(item: Object): void

+getItemAt(index: int): Object

+getItemCount(): int

+getSelectedIndex(): int

+setSelectedIndex(index: int): void

+getSelectedItem(): Object

+setSelectedItem(item: Object): void

+removeItem(anObject: Object): void

+removeItemAt(anIndex: int): void

+removeAllItems(): void

Creates a default empty combo box.

Creates a combo box that contains the elements in the specified array.

Adds an item to the combo box.

Returns the item at the specified index.

Returns the number of items in the combo box.

Returns the index of the selected item.

Sets the selected index in the combo box.

Returns the selected item.

Sets the selected item in the combo box.

Removes an item from the item list.

Removes the item at the specified index in the combo box.

Removes all items in the combo box.

javax.swing.JComponent

22

Page 23: Graphical User Interface (GUI) - 2

Using theitemStateChanged Handler

public void itemStateChanged(ItemEvent e)

{ // Make sure the source is a combo box if (e.getSource() instanceof JComboBox) String s = (String)e.getItem();}

23

When a new item is selected, itemStateChanged() for ItemEvent is invoked .

Page 24: Graphical User Interface (GUI) - 2

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

public class UjiItemEventComboBox extends JFrame implements ItemListener{ JComboBox jcb = new JComboBox(); public UjiItemEventComboBox() { super("Membuat combobox"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); jcb.addItem("wira"); jcb.addItem("waja"); jcb.addItemListener(this); bekas.add(jcb); setSize(400,200); setVisible(true); } public void itemStateChanged(ItemEvent e) { if (e.getSource()== jcb) { if (e.getStateChange() == ItemEvent.SELECTED) {

String s1 = (String) jcb.getSelectedItem(); JOptionPane.showMessageDialog(this,"Anda telah memilih "+s1,"Maklumat", JOptionPane.INFORMATION_MESSAGE);

} } }

ItemEvent: Display item on dialog box when item in Combo Box is selected

Page 25: Graphical User Interface (GUI) - 2

public static void main(String[] arg) { UjiItemEventComboBox teks = new UjiItemEventComboBox(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

Page 26: Graphical User Interface (GUI) - 2

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

public class UjiActionEventComboBox extends JFrame implements ActionListener{ JComboBox jcb = new JComboBox(); JButton btg = new JButton("Klik");

public UjiActionEventComboBox() { super("Membuat combobox"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); jcb.addItem("wira"); jcb.addItem("waja"); btg.addActionListener(this); bekas.add(jcb); bekas.add(btg); setSize(400,200); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) { String s1 = (String)jcb.getSelectedItem(); JOptionPane.showMessageDialog(this,"Anda telah memilih "+s1,“ Maklumat",JOptionPane.INFORMATION_MESSAGE); } } public static void main(String[] arg) { UjiActionEventComboBox teks = new UjiActionEventComboBox(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

ActionEvent: Display selected item on dialog box when a button is clicked

Page 27: Graphical User Interface (GUI) - 2

ListSelectionEvent - JList

Generates javax.swing.event.ListSelectionEvent to notify the listeners of the slections

Event listener interface : ListSelectionListener Event handler interface:

public void valueChanged(ListSelectionEvent e)○ When select item(s) in JList

Index for the first item in the JList will be started by 0..n-1.

Page 28: Graphical User Interface (GUI) - 2

ListSelectionEvent - JList

javax.swing.JList

+JList()

+JList(items: Object[])

+getSelectedIndex(): int

+setSelectedIndex(index: int): void

+getSelectedIndices(): int[]

+setSelectedIndices(indices: int[]): void

+getSelectedValue(): Object

+getSelectedValues(): Object[]

+getVisibleRowCount(): int

+setVisibleRowCount(count: int): void

+getSelectionBackground(): Color

+setSelectionBackground(c: Color): void

+getSelectionForeground(): Color

+setSelectionForeground(c: Color): void

+getSelectionMode(): int

+setSelectionMode(selectionMode: int):

Creates a default empty list.

Creates a list that contains the elements in the specified array.

Returns the index of the first selected item.

Selects the cell at the specified index.

Returns an array of all of the selected indices in increasing order.

Selects the cells at the specified indices.

Returns the first selected item in the list.

Returns an array of the values for the selected cells in increasing index order.

Returns the number of visible rows displayed without a scrollbar. (default: 8)

Sets the preferred number of visible rows displayed without a scrollbar.

Returns the background color of the selected cells.

Sets the background color of the selected cells.

Returns the foreground color of the selected cells.

Sets the foreground color of the selected cells.

Returns the selection mode for the list.

Sets the selection mode for the list.

javax.swing.JComponent

28

Page 29: Graphical User Interface (GUI) - 2

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

class UjiSelectionEventList extends JFrame implements ListSelectionListener{ String[] jenisWarna= {"merah","hijau","kuning","jingga","biru"}; JList senaraiWarna; public UjiSelectionEventList() { super("Membuat JList"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); senaraiWarna = new JList(jenisWarna); senaraiWarna.addListSelectionListener(this); senaraiWarna.setVisibleRowCount(3); senaraiWarna.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); bekas.add(new JScrollPane(senaraiWarna)); setSize(300,200); setVisible(true); }

public void valueChanged(ListSelectionEvent e) { if (e.getSource()== senaraiWarna) {

String s1 = (String)senaraiWarna.getSelectedValue(); JOptionPane.showMessageDialog(this,s1,"maklumat", JOptionPane.INFORMATION_MESSAGE);

} }

SelectionEvent: Display selected item when item in JList is clicked

Page 30: Graphical User Interface (GUI) - 2

public static void main(String[] arg) { UjiSelectionEventList list = new UjiSelectionEventList(); list.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

Page 31: Graphical User Interface (GUI) - 2

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

class DataListEventt extends JFrame implements ActionListener{ String[] jenisWarna= {"merah","hijau","kuning","jingga","biru"}; JList senaraiWarna; JButton btg = new JButton("Klik"); public DataListEventt() { super("Membuat JList"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout()); senaraiWarna = new JList(jenisWarna); senaraiWarna.setVisibleRowCount(3); senaraiWarna.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); bekas.add(new JScrollPane(senaraiWarna)); bekas.add(btg); btg.addActionListener(this); setSize(300,200); setVisible(true); }

public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) {

String s1 = (String)senaraiWarna.getSelectedValue(); JOptionPane.showMessageDialog(this,s1,"maklumat", JOptionPane.INFORMATION_MESSAGE);

} }

ActionEvent: Display selected item in JList when a button is clicked

Page 32: Graphical User Interface (GUI) - 2

public static void main(String[] arg) { DataListEventt list = new DataListEventt(); list.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

Page 33: Graphical User Interface (GUI) - 2

ItemEvent - RadioButton

Event Listener Interface : ItemListener Event handler method :

public void ItemStateChanged(ItemEvent e)○ Click a radio button

Page 34: Graphical User Interface (GUI) - 2

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

public class UjiItemListenerRadioButton extends JFrame implements ItemListener { JRadioButton rdButton1,rdButton2; public UjiItemListenerRadioButton() { super("Membuat RadioButton"); Container bekas = getContentPane();

bekas.setLayout(new FlowLayout());

rdButton1 = new JRadioButton("wira"); rdButton2 = new JRadioButton("Waja",true);

rdButton1.addItemListener(this); rdButton2.addItemListener(this); bekas.add(rdButton1); bekas.add(rdButton2);

ButtonGroup butang = new ButtonGroup(); butang.add(rdButton1); butang.add(rdButton2); setSize(400,200); setVisible(true); }

ItemEvent: Display item on dialog box when a radio button is clicked

Page 35: Graphical User Interface (GUI) - 2

public void itemStateChanged(ItemEvent e) { if (e.getSource()== rdButton1) { if (e.getStateChange() == ItemEvent.SELECTED)

JOptionPane.showMessageDialog(this,"kereta wira","Maklumat", JOptionPane.INFORMATION_MESSAGE);

} if (e.getSource()== rdButton2) { if (e.getStateChange() == ItemEvent.SELECTED)

JOptionPane.showMessageDialog(this,"kereta waja","Maklumat", JOptionPane.INFORMATION_MESSAGE);

} }

public static void main(String[] arg) { UjiItemListenerRadioButton teks = new UjiItemListenerRadioButton(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Page 36: Graphical User Interface (GUI) - 2

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

public class DataRadioButton extends JFrame implements ActionListener { JRadioButton rdButton1,rdButton2; JButton btg = new JButton("Klik"); String kereta;

public DataRadioButton() { super("Membuat RadioButton"); Container bekas = getContentPane();

bekas.setLayout(new FlowLayout());

rdButton1 = new JRadioButton("wira"); rdButton2 = new JRadioButton("Waja",true); bekas.add(rdButton1); bekas.add(rdButton2); bekas.add(btg); btg.addActionListener(this); ButtonGroup butang = new ButtonGroup(); butang.add(rdButton1); butang.add(rdButton2); setSize(400,200); setVisible(true); }

ActionEvent: Display selected item from radio button when a button is clicked

Page 37: Graphical User Interface (GUI) - 2

public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) { if (rdButton1.isSelected()) kereta = "Wira"; if (rdButton2.isSelected()) kereta = "Waja"; JOptionPane.showMessageDialog(this,kereta,"maklumat", JOptionPane.INFORMATION_MESSAGE); } }

public static void main(String[] arg) { DataRadioButton teks = new DataRadioButton(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Page 38: Graphical User Interface (GUI) - 2

ItemEvent - CheckBox

Event Listener Interface : ItemListener Event handler metod :

public void ItemStateChanged(ItemEvent e)○ Click a check box

Page 39: Graphical User Interface (GUI) - 2

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

public class UjiItemEventCheckBox extends JFrame implements ItemListener{ JCheckBox chkBox1,chkBox2; public UjiItemEventCheckBox() { super("Membuat CheckBox"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout());

chkBox1 = new JCheckBox("Wira"); chkBox1.addItemListener(this); chkBox2 = new JCheckBox("Waja"); bekas.add(chkBox1); bekas.add(chkBox2); setSize(400,200); setVisible(true); } public void itemStateChanged(ItemEvent e) { if (e.getSource()== chkBox1) { if (e.getStateChange() == ItemEvent.SELECTED)

JOptionPane.showMessageDialog(this,"Di tanda","Maklumat", JOptionPane.INFORMATION_MESSAGE);

} } public static void main(String[] arg) { UjiItemEventCheckBox teks = new UjiItemEventCheckBox(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

ItemEvent: Display a message when clicking a check box

Page 40: Graphical User Interface (GUI) - 2

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

public class DataCheckBox extends JFrame implements ActionListener{ JCheckBox chkBox1,chkBox2; JButton btg = new JButton("Klik"); String kereta;

public DataCheckBox() { super("Membuat CheckBox"); Container bekas = getContentPane(); bekas.setLayout(new FlowLayout());

chkBox1 = new JCheckBox("Wira"); chkBox2 = new JCheckBox("Waja"); bekas.add(chkBox1); bekas.add(chkBox2); bekas.add(btg); btg.addActionListener(this); setSize(400,200); setVisible(true); }

ActionEvent: Display selected item from check box when button is clicked

Page 41: Graphical User Interface (GUI) - 2

public void actionPerformed(ActionEvent e) { if (e.getSource()== btg) { if (chkBox1.isSelected()) kereta = "Wira"; if (chkBox2.isSelected()) kereta = "Waja"; JOptionPane.showMessageDialog(this,kereta,"maklumat",

JOptionPane.INFORMATION_MESSAGE); } }

public static void main(String[] arg) { DataCheckBox teks = new DataCheckBox(); teks.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}