Я не знаю, почему все поля ProgressMonitor являются закрытыми. Наверное, не самое гордое творение мистера Годслинга:)
* @author James Gosling
* @author Lynn Monsanto (accessibility)
* @version 1.37 04/12/06
Просто клонируйте его вместе с некоторыми частными пакетами из Swing, затем вы можете делать все, что захотите, например, добавлять флаг для отмены и использовать его в конструкторе ProgressOptionPane.
(ОБНОВЛЕНИЕ) Если вы не можете получить JDK-код под SCSL, то вот хитрый способ завладеть JDialog, тогда вы можете делать все, что захотите, включая удаление кнопки Отмена:
progressMonitor = new ProgressMonitor(ProgressMonitorDemo.this,
"Running a Long Task",
"", 0, 100);
progressMonitor.setMillisToDecideToPopup(0);
progressMonitor.setMillisToPopup(0);
progressMonitor.setProgress(0);
JDialog dialog = (JDialog)progressMonitor.getAccessibleContext().getAccessibleParent();
JOptionPane pane = (JOptionPane)dialog.getContentPane().getComponent(0);
pane.setOptions(new Object[]{});
Это ужасно и полностью зависит от реализации ProgressMonitor. Поэтому вы должны проверить ClassCastException и NULL.
Почему вам нужно установить оба периода времени на 0? В противном случае диалог не создается в setProgress.