我的任務是必要的,不應該取消,我該如何要求ProgressMonitor不要顯示「取消」按鈕,因此當它完成時,它會自動關閉面板。如何省略Java ProgressMonitor中的「取消」按鈕?
弗蘭克
我的任務是必要的,不應該取消,我該如何要求ProgressMonitor不要顯示「取消」按鈕,因此當它完成時,它會自動關閉面板。如何省略Java ProgressMonitor中的「取消」按鈕?
弗蘭克
我想也許我可以問它 回報組件並刪除 按鈕
從Swing教程使用ProgressMonitorDemo(由BalusC鏈接)我做了如下修改:
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressMonitor.setProgress(progress);
// Added this
AccessibleContext ac = progressMonitor.getAccessibleContext();
JDialog dialog = (JDialog)ac.getAccessibleParent();
java.util.List<JButton> components =
SwingUtils.getDescendantsOfType(JButton.class, dialog, true);
JButton button = components.get(0);
button.setVisible(false);
// end of change
String message =
String.format("Completed %d%%.\n", progress);
progressMonitor.setNote(message);
taskOutput.append(message);
if (progressMonitor.isCanceled() || task.isDone()) {
Toolkit.getDefaultToolkit().beep();
if (progressMonitor.isCanceled()) {
task.cancel(true);
taskOutput.append("Task canceled.\n");
} else {
taskOutput.append("Task completed.\n");
}
startButton.setEnabled(true);
}
}
}
您還需要下載Swing Utils類。
該代碼應該只執行一次,否則當對話框關閉時你會得到一個NPE。我會讓你整理一下:)。
這就是它!正是我期望的,謝謝! – Frank 2010-05-06 14:00:55
使用ProgressBar而不是ProgessMonitor。 – 2010-05-06 08:33:20