我在想,也许我可以要求它返回其中的组件并删除按钮
使用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。我会让你整理一下:)。



