2016-07-27 15 views
0

Ich habe einen Assistenten Iterator mit ein paar PanelDescriptors. Ich versuche, einen Wartezeiger anzuzeigen, wenn auf einen PanelDescriptor 'Next' geklickt wird, der WizardDescriptor.ValidatingPanel implementiert. Die Methode validate() benötigt Zeit, um ausgeführt zu werden.Wartecursor anzeigen, wenn 'Weiter' geklickt wird - Netbeans WizardDescriptor

Bis jetzt habe ich einige Möglichkeiten ausprobiert, nicht von ihnen funktioniert für mich.

  1. http://dev.platform.netbeans.narkive.com/ofiffInN/finally-a-waitcursor-routine-that-works-in-netbeans
  2. http://netbeans-org.1045718.n5.nabble.com/Setting-wait-cursor-td3026613.html#a3026614

    private static void changeCursorWaitStatus(final boolean isWaiting) { 
        Mutex.EVENT.writeAccess(new Runnable() { 
         public void run() { 
          try { 
           JFrame mainFrame = (JFrame) WindowManager.getDefault().getMainWindow(); 
           Component glassPane = mainFrame.getGlassPane(); 
           if (isWaiting) { 
            glassPane.setVisible(true); 
            glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
           } else { 
            glassPane.setVisible(false); 
            glassPane.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 
           } 
          } catch (Exception e) { 
           // probably not worth handling 
          } 
         } 
        }); 
    } 
    
  3. https://community.oracle.com/message/5322657#5322657

    try {    
        TopComponent.getRegistry().getActivated().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
        doBusyStuff(); 
    } finally { 
        TopComponent.getRegistry().getActivated().setCursor(Cursor.getDefaultCursor()); 
    } 
    

Jeder Hinweis mich in die richtige Richtung weisen darauf geschätzt.

Antwort

1

Versuchen Sie, diese

private static final java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() { 

    }; 

    protected static final Cursor READY_CSR = new Cursor(Cursor.DEFAULT_CURSOR); 
    protected static final Cursor WAIT_CSR = new Cursor(Cursor.WAIT_CURSOR); 

    public void setBusy(boolean busy) { 

     if(busy) { 
      setCursor(WAIT_CSR); 
      frame.getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
      frame.getGlassPane().addMouseListener(mouseAdapter); 
      frame.getGlassPane().setVisible(true); 
     }else { 
      setCursor(READY_CSR); 
      frame.getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 
      frame.getGlassPane().removeMouseListener(mouseAdapter); 
      frame.getGlassPane().setVisible(false); 
     } 
    } 
+0

[Erste link] (http://dev.platform.netbeans.narkive.com/ofiffInN/finally-a-waitcursor-routine-that-works-in-netbeans) enthält Lösung wie diese und es funktioniert nicht in meinem Fall. – kuz