0

いくつかの PanelDescriptor を持つ Wizard Iterator があります。WizardDescriptor.ValidatingPanel を実装する 1 つの PanelDescriptor で [次へ] をクリックすると、待機カーソルを表示しようとしています。実行に時間がかかる validate() メソッド。

これまでのところ、いくつかの方法を試しましたが、どれもうまくいきません。

  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());
    }
    

私を正しい方向に向けるヒントがあれば幸いです。

4

1 に答える 1

1

これを試して

    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);
        }
    }
于 2016-07-27T12:24:06.667 に答える