Listeners represent each event they handle with a separate method. And each listener method takes an event parameter of the appropriate type.
For example, the
For example, the
actionPerformed method of the ActionListener interface takes an ActionEvent object as a parameter.
public void actionPerformed (ActionEvent e)
In the code example, the class implements the
MouseListener's mouseClicked method, which takes a MouseEvent object as a parameter.public void mouseClicked (MouseEvent e) {
String search = frame.t.getText( );
String searchField = frame.scribble.getText( );
if ( (search != null) & (search != " ") ) {
int i = searchField.indexOf (search);
if (i == -1)
frame.display.setText("Search string not found");
else {
frame.display.setText("Search string found");
// Highlight the found search string
frame.scribble.select(i, i + search.length( ) );
}
}
}
When you implement a listener interface, you must provide empty implementations for any of its methods that you do not want to use.
Consider the code that provides empty implementations for the four
Consider the code that provides empty implementations for the four
MouseListener methods it doesn't use.public void mouseClicked (MouseEvent e) {
String search = frame.t.getText( );
String searchField = frame.scribble.getText( );
if ( (search != null) & (search != " ") ) {
int i = searchField.indexOf (search);
if (i == -1)
frame.display.setText("Search string not found");
else {
frame.display.setText("Search string found");
// Highlight the found search string
frame.scribble.select(i, i + search.length( ) );
}
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
Java provides an adapter for each interface that has more than one method. For example, the
To handle and perform this kind of event, a
The sample code shows how this is performed:
WindowListener interface has a corresponding adapter class that implements it. This is called WindowAdapter.To handle and perform this kind of event, a
WindowEvent must be passed to a WindowListener or WindowAdapter object that is registered to a Window component.The sample code shows how this is performed:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SampleS {
public static void main(String args[]) {
JFrame f=new JFrame("Sample JFrame");
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
The
addWindowListener method is used to register a WindowEvent for a Window component such as a JFrame. A windowClosing method is implemented whenever a WindowEvent occurs. This in turn closes the current window as executed by the System.exit(0) statement.
Using the adapter instead of the listener interface to handle an event often prevents you having to implement irrelevant methods that are part of the listener interface.
However, the downside is that by extending adapter classes, you prevent the event handler from extending any other class.
However, the downside is that by extending adapter classes, you prevent the event handler from extending any other class.
Supplement
Selecting the link title opens the resource in a new browser window.
View a table of listener interfaces and their adapters.
Event adapters and event listeners are commonly implemented using Java's anonymous inner classes. This allows you to register and define the event handling code all in one place and with the minimum of extraneous code.
checkBox. {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected())
label.setText("You will be receiving special deals");
else
label.setText("You have chosen not to receive special deals");
}
}
You can, for example, create an anonymous inner class that implements the
ActionListener interface. To do this, you use a listener registration method - in this case, addActionListener - to register the adapter.checkBox.MISSING CODE {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected())
label.setText("You will be receiving special deals");
else
label.setText("You have chosen not to receive special deals");
}
}
component.addXXXListener (new XXXListener() {
public void eventhandler (eventtype e) {
// implementation }
}
public void eventhandler (eventtype e) {
// implementation }
}
checkBox.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected())
label.setText("You will be receiving special deals");
else
label.setText("You have chosen not to receive special deals");
}
}
You type
addActionListener (new ActionListener() to register the adapter.
You have registered the
Next, you define the relevant method - in this case,
ActionListener anonymous class.Next, you define the relevant method - in this case,
actionPerformed.checkBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkBox.isSelected())
label.setText("You will be receiving special deals");
else
label.setText("You have chosen not to receive special deals");
}
}
Suppose you have a
List control and you add a listener to listen for ItemEvents. The listener implements the ItemListener interface, which contains one method only - the itemStateChanged method.
public void itemStateChanged (ItemEvent e)
The
itemStateChanged method is invoked when the event occurs, such as when a list item is selected. The details of the event are passed to the event handler - in other words the method - via the ItemEvent argument, AccountList.public void itemStateChanged(ItemEvent AccountList) {
try {
List target = (List) AccountList.getItem() ;
int i = 0;
while (i<6 && !(accountOptions[i].equals(target.getText()))) {
i++;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
descriptions[i] = description.getText();
}
if (e.getStateChange() == ItemEvent.SELECTED) {
description.setText(details[i]);
}
}
}
The
target object implements the ItemListener interface and is passed to ItemEvent when the event occurs. The listener is spared the details of processing individual mouse movements and mouse clicks, and instead processes semantic events, such as ItemEvent.DESELECTED or ItemEvent.SELECTED.public void itemStateChanged(ItemEvent AccountList) {
try {
List target = (List) AccountList.getItem() ;
int i = 0;
while (i<6 && !(accountOptions[i].equals(target.getText()))) {
i++;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
descriptions[i] = description.getText()
}
if (e.getStateChange() == ItemEvent.SELECTED) {
description.setText(details[i]);
}
}
}
The
getItem method of the AccountList object is cast to a List datatype, which is assigned to target, an object of the List class.
public Object getItem()
The
getItem method returns the element of the selectable control - a List in this example - affected by the selection event.public void itemStateChanged(ItemEvent AccountList) {
try {
List target = (List) AccountList.getItem() ;
int i = 0;
while (i<6 && !(accountOptions[i].equals(target.getText()))) {
i++;
}
if (e.getStateChange() == ItemEvent.DESELECTED) {
descriptions[i] = description.getText();
}
if (e.getStateChange() == ItemEvent.SELECTED) {
description.setText(details[i]);
}
}
}
You can use the
Alternatively, you can call the
getPoint method in the MouseEvent object to determine an event's x and y coordinates. The returned coordinates are relative to the component's x and y coordinates. You can call getPoint() at any time.Alternatively, you can call the
getX and getY methods separately.
public synchronized Point getPoint()
public int getX()
public int getY()
public int getX()
public int getY()







3 comments:
very good tutorial. nice
maram2013
نقدم لكم الان افضل مراز التوكيل على الاطلاق
توكيل اريستون المميز فى عالم الصيانة والتوكيل وتوكيل امريكول الذى يحتوى على افضل قطع الغيار النادره و توكيل كاريير الذى يتم العمل به تحت اشراف افضل المهندسين المتخصصين فى مجال الصيانة
Post a Comment