当'下一步'显示等待光标点击 - Netbeans WizardDescriptor

时间:2016-07-27 12:03:42

标签: java swing cursor netbeans-platform glasspane

我有一个带有几个PanelDescriptors的向导迭代器。 我试图在“下一步”时显示等待光标。单击一个实现WizardDescriptor.ValidatingPanel的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 个答案:

答案 0 :(得分: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);
        }
    }