首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何省略Java ProgressMonitor中的“取消”按钮?

如何省略Java ProgressMonitor中的“取消”按钮?
EN

Stack Overflow用户
提问于 2010-05-06 10:21:13
回答 2查看 3.9K关注 0票数 3

我的任务是必要的,不应该被取消,我如何要求ProgressMonitor不显示“取消”按钮,这样当它完成时,它会自动关闭面板。

弗兰克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-06 11:45:58

我在想,也许我可以要求它返回其中的组件并删除按钮

使用Swing教程中的ProgressMonitorDemo (通过BalusC链接),我做了以下更改:

代码语言:javascript
复制
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。我会让您整理一下:)。

票数 4
EN

Stack Overflow用户

发布于 2010-05-06 10:30:50

这不可能。但是,您可以创建一个自定义进度监视器,如this tutorial中所述。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2778045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档