I have a list of words inside the JList. Every time I point the mouse cursor at a word, I want the cursor to change into a hand cursor. Now my problem is how to do that?
Could someone help me with this problem?
We can change Swing's objects ( JLabel , JTextArea , JButton , etc) cursor using the setCursor() method. In the snippet below, for demonstration, we change the cursor of the JFrame . Your mouse pointer or cursor shape will be changed if you positioned inside the frame. A collections of cursor shape defined in the java.
put( "TextField. caretForeground" , Color. red ); Just put this code at the start of your main() (or anywhere before any GUIs are displayed), and it will set all the carets in all the textfields to red (or any other color you specify).
Use a MouseMotionListener on your JList to detect when the mouse enters it and then call setCursor
to convert it into a HAND_CURSOR
.
Sample code:
final JList list = new JList(new String[] {"a","b","c"}); list.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseMoved(MouseEvent e) { final int x = e.getX(); final int y = e.getY(); // only display a hand if the cursor is over the items final Rectangle cellBounds = list.getCellBounds(0, list.getModel().getSize() - 1); if (cellBounds != null && cellBounds.contains(x, y)) { list.setCursor(new Cursor(Cursor.HAND_CURSOR)); } else { list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); } } @Override public void mouseDragged(MouseEvent e) { } });
You probably want to look at the Component.setCursor
method, and use it together with the Cursor.HAND
constant.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With