Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Change Cursor in a thread for animation

import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class Main implements Runnable, ActionListener {   private boolean animate;   private Cursor[] cursors = new Cursor[] { Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR),       Cursor.getPredefinedCursor(Cursor.NE_RESIZE_CURSOR) };   private JFrame frame;   public Main(JFrame frame) {     animate = false;     this.frame = frame;   }   public void run() {     int count = 0;     while (animate) {       try {         Thread.currentThread().sleep(200);       } catch (Exception ex) {       }       frame.setCursor(cursors[count % cursors.length]);       count++;     }     frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));   }   public void actionPerformed(ActionEvent evt) {     JButton button = (JButton) evt.getSource();     if (animate) {       button.setText("Start Animation");       animate = false;     } else {       animate = true;       button.setText("Stop Animation");       new Thread(this).start();     }   }   public static void main(String[] args) {     JFrame frame = new JFrame();     JButton button = new JButton("Start Animation");     button.addActionListener(new Main(frame));     frame.getContentPane().add(button);     frame.setSize(300, 300);     frame.setVisible(true);   }   public static void p(String str) {     System.out.println(str);   } }