Copyright Derek O'Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.
The cursor can be set programmatically.
CursorDemo example: (Run Applet)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class CursorDemo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel implements ListSelectionListener, ActionListener
{
private final String cursors[] =
{
"DEFAULT_CURSOR",
"CROSSHAIR_CURSOR",
"TEXT_CURSOR",
"WAIT_CURSOR",
"SW_RESIZE_CURSOR",
"SE_RESIZE_CURSOR",
"NW_RESIZE_CURSOR",
"NE_RESIZE_CURSOR",
"N_RESIZE_CURSOR",
"S_RESIZE_CURSOR",
"W_RESIZE_CURSOR",
"E_RESIZE_CURSOR",
"HAND_CURSOR",
"MOVE_CURSOR"
};
private final JList cursorList = new JList(cursors);
private final JButton cursorButton = new JButton("Hand");
public View()
{
super();
// add components to the applet panel
this.add(this.cursorList);
this.add(this.cursorButton);
// add listeners to the components
this.cursorList.addListSelectionListener(this);
this.cursorButton.addActionListener(this);
}
@Override
public void valueChanged(ListSelectionEvent e)
{
final int i = this.cursorList.getSelectedIndex();
setCursor(Cursor.getPredefinedCursor(i));
}
@Override
public void actionPerformed(ActionEvent e)
{
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
}
}
Any image can be used as a cursor.
Cursor_Custom_Demo example: (Run Applet)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Cursor_Custom_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel implements ActionListener
{
private Cursor magnifyingGlassCursor;
private Cursor koalaBearCursor;
private final JButton toggle = new JButton("Magnifying Glass");
public View()
{
super();
final Image magnifyingGlassImage = new ImageIcon(getClass().getClassLoader().getResource("images/magnifyingGlassIcon.png")).getImage();
final Image koalaBearImage = new ImageIcon(getClass().getClassLoader().getResource("images/koala.jpg")).getImage();
final Point point = new Point(0, 0); // hotpoint of the image
try
{
// Crate two user defined Cursors
magnifyingGlassCursor = Toolkit.getDefaultToolkit().createCustomCursor(magnifyingGlassImage, point, "Magnifying Glass");
koalaBearCursor = Toolkit.getDefaultToolkit().createCustomCursor(koalaBearImage, point, "Koala Bear");
}
catch (Exception e)
{
}
// add the toggle button onto the applet's panel
this.add(this.toggle);
this.toggle.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e)
{
if (this.toggle.getText().equals((String) "Magnifying Glass"))
{
this.setCursor(this.magnifyingGlassCursor);
this.toggle.setText("Koala Bear");
}
else
{
this.setCursor(this.koalaBearCursor);
this.toggle.setText("Magnifying Glass");
}
}
}
}
Passing the width and height of the cursor image to the method
Toolkit.getDefaultToolkit().getBestCursorSize(width, height)
will return the actual cursor size that the system will use. This information can be used to set the cursor's hotpoint. In the example below, the hotpoint is set to the centre of the cursor.
Cursor_Centre_Hotpoint_Demo example: (Run Applet)
import java.awt.*;
import javax.swing.*;
public class Cursor_Centre_Hotpoint_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
final JButton button = new JButton("A Button");
final Image bullseyeImage = new ImageIcon(getClass().getClassLoader().getResource("images/bullseye.gif")).getImage();
final Dimension cursorSize = Toolkit.getDefaultToolkit().getBestCursorSize(bullseyeImage.getWidth(this), bullseyeImage.getHeight(this));
final Point point = new Point((int) (cursorSize.getWidth() / 2.0), (int) (cursorSize.getHeight() / 2.0)); // hotpoint of the image
try
{
Cursor bullseyeCursor = Toolkit.getDefaultToolkit().createCustomCursor(bullseyeImage, point, "Bullseye");
this.setCursor(bullseyeCursor);
}
catch (Exception e)
{
}
// add a button onto the applet's panel
this.add(button);
}
}
}
Copyright Derek O' Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.