java - Not Always Showing Wait Cursor on Mac -


i implementing "load file" functionality in java application - file might on network share can take little while read. once user has selected file load, changing mouse cursor cursor.wait_cursor. works fine on windows, getting strange results on both java 7u75 , 8u45 on mac os 10.9.5. have tried changing cursor on both jframe component glasspane, seeing same results.

basically, on mac os, if mouse interacts jfilechooser in way cursor isn't changed, if use keyboard select file works expected , cursor changed.

this looks bit bug like, lookig wisdom might have come across before , conquered it? have put sscce below demonstrate problem.

import java.awt.*; import java.awt.event.*; import javax.swing.*;  public class sscce extends jframe implements actionlistener {   private final sscce t = this;   private component gp = getrootpane().getglasspane();   private jmenubar mbar;   private jmenu mfile;   private jmenuitem miload;    public sscce() {     settitle("sscce");     setsize(960, 640);     setdefaultcloseoperation(exit_on_close);      mbar = new jmenubar();     mfile = new jmenu("file");     miload = new jmenuitem("load");     miload.addactionlistener(this);     mfile.add(miload);     mbar.add(mfile);     setjmenubar(mbar);      setlocationrelativeto(null);     setvisible(true);   }    @override   public void actionperformed(actionevent e) {     if (e.getsource() == miload) {       jfilechooser fc = new jfilechooser();       fc.showdialog(this, "test");        updatecursor(cursor.wait_cursor);        new swingworker<void, void>() {         @override         protected void doinbackground() {           try {             thread.sleep(5000);           }           catch (exception e) {             e.printstacktrace();           }           return null;         }          @override         protected void done() {           updatecursor(cursor.default_cursor);           joptionpane.showmessagedialog(t, "ok", "status", joptionpane.plain_message);         }       }.execute();     }   }    private void updatecursor(final int c) {     gp.setcursor(cursor.getpredefinedcursor(c));     gp.setvisible(c != cursor.default_cursor);   }    public static void main(string[] args) {     swingutilities.invokelater(new runnable() {       @override       public void run() {         new sscce();       }     });   } } 


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -