import java.awt.BorderLayout; import java.awt.Cursor; import java.awt.Point; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class EigenerCursor { public EigenerCursor() { final JFrame frame = new JFrame("Eigener Cursor"); frame.add(new JTextField(), BorderLayout.SOUTH); JCheckBox cb = new JCheckBox("GlassPane-Sichtbarkeit"); frame.add(cb, BorderLayout.NORTH); cb.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { frame.getGlassPane().setVisible(((JCheckBox) e.getSource()).isSelected()); } }); try { URL url = getClass().getClassLoader().getResource("img/redCursor.png"); BufferedImage img = ImageIO.read(url); Point hotSpot = new Point(0, 0); Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(img, hotSpot, "red Cursor"); frame.setCursor(cursor); } catch (IOException e) { e.printStackTrace(); } frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setSize(300, 300); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new EigenerCursor()); } }