Отображать курсор ожидания при нажатии "Далее" - Netbeans WizardDescriptor
У меня есть мастер-итератор с несколькими дескрипторами PanelDescriptors. Я пытаюсь отобразить курсор ожидания при нажатии "Далее" на одном PanelDescriptor, который реализует WizardDescriptor.ValidatingPanel. Метод validate() в этом требует времени выполнения.
Пока что я пробовал несколько способов, ни один из них не работает для меня.
- http://dev.platform.netbeans.narkive.com/ofiffInN/finally-a-waitcursor-routine-that-works-in-netbeans
http://netbeans-org.1045718.n5.nabble.com/Setting-wait-cursor-td3026613.html
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 } } }); }
https://community.oracle.com/message/5322657
try { TopComponent.getRegistry().getActivated().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); doBusyStuff(); } finally { TopComponent.getRegistry().getActivated().setCursor(Cursor.getDefaultCursor()); }
Любая подсказка, чтобы указать мне в правильном направлении, будет оценена.
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);
}
}