Bonjour,
J'ai une fenetre secondaire (JPanel) contenant une JCombo Box liste, en la déroulant je lance une longue action (une requete à un serveur): pendant cette action je voudrais que la fenetre soit modale (pas accessible à l'utilisateur ) et le cursor en WAIT_CURSOR . En même temps la fenetre principale ne devrait pas être grisée.![]()
J'ai essayé avec ça mais le cursor n'apparait en wait qu' aprés l'exécution de l'action pas pendant et il reste bloquée même quand je ferme la fenetre:![]()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public static void startWorker(final Runnable runnable,final Component window,final SecBrowserHandler browser) { SwingWorker swingWorker = new SwingWorker() { public Object construct() { try { setWaitCursor(true,window,browser); runnable.run(); } catch (Exception e) { setWaitCursor(false,window,browser); //showExceptionDialog(e); } finally { setWaitCursor(false,window,browser); } return null; } }; swingWorker.start(""); } public static void setWaitCursor(boolean waitCursor, Component window,SecBrowserHandler browser) { if (browser!=null) { startModality(); } else { if (!waitCursor) window.setCursor(null); else window.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); glassPane_.setVisible(waitCursor); } }
L'appel se fait comme suit :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 public void initWeeklyScheduleList() { weeklyListModel_.removeAllElements(); weeklyScheduleNameListGadget_.removeAllItems(); AciModalityManager.startWorker(new Runnable() { public void run() { String[] scheduleIds = null; if (commonWeeklyScheduleManaged_) { scheduleIds = SecCalendarManager.getInstance().getCommonWeeklyScheduleNameList(true); } else { scheduleIds = SecCalendarManager.getInstance().getUserWeeklyScheduleNameList(owner_,false); } // NMUes13771 // weeklyListModel_.addElement(SecBabel.getString("sec.schedule.createNewWS")); if (scheduleIds != null) { if (commonWeeklyScheduleManaged_) { for (int i = 0; i < scheduleIds.length ; i++ ) { weeklyListModel_.addElement(scheduleIds[i]); } } else { initAttacheDetachedWslist(scheduleIds); for (int j=0;j<scheduleIdattached_.size();j++) { weeklyListModel_.addElement(scheduleIdattached_.elementAt(j)); } for (int j=0;j<scheduleIdnotattached_.size();j++) { weeklyListModel_.addElement(scheduleIdnotattached_.elementAt(j)); } } } } },commonWeeklySchedulePanel_,SecBrowserHandler.getCurrentBrowser()); weeklyListModel_.setSelectedItem(weeklyListModel_.getElementAt(0)); weeklyListModel_.addElement(SecBabel.getString("sec.schedule.createNewWS")); }
Partager