如何省去“;取消“;Java ProgressMonitor中的按钮?
我的任务是必要的,不应该取消,我如何要求ProgressMonitor不显示“取消”按钮,以便在完成后自动关闭面板如何省去“;取消“;Java ProgressMonitor中的按钮?,java,swing,Java,Swing,我的任务是必要的,不应该取消,我如何要求ProgressMonitor不显示“取消”按钮,以便在完成后自动关闭面板 弗兰克,那是不可能的。但是,您可以创建自定义进度监视器,如中所述 我在想也许我可以要求它 返回其中的组件并删除 按钮 使用Swing教程中的ProgressMonitorDemo(由BalusC链接到),我做了以下更改: public void propertyChange(PropertyChangeEvent evt) { if ("progress" == evt.g
弗兰克,那是不可能的。但是,您可以创建自定义进度监视器,如中所述
我在想也许我可以要求它 返回其中的组件并删除 按钮 使用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);
}
}
}
public void propertyChange(PropertyChangeEvent evt){
if(“progress”==evt.getPropertyName()){
int progress=(整数)evt.getNewValue();
progressMonitor.setProgress(progress);
//加上这个
AccessibleContext ac=progressMonitor.getAccessibleContext();
JDialog dialog=(JDialog)ac.getAccessibleParent();
java.util.List组件=
SwingUtils.getDegenantSoftype(JButton.class,dialog,true);
JButton button=components.get(0);
按钮。设置可见(假);
//变革的结束
字符串消息=
格式(“已完成%d%%.\n”,进度);
progressMonitor.setNote(消息);
taskOutput.append(消息);
if(progressMonitor.isCanceled()| | task.isDone()){
getDefaultToolkit().beep();
if(progressMonitor.isCanceled()){
任务。取消(true);
taskOutput.append(“任务已取消。\n”);
}否则{
taskOutput.append(“任务已完成。\n”);
}
startButton.setEnabled(真);
}
}
}
您还需要下载该类
代码应该只执行一次,否则当对话框关闭时会得到一个NPE。我会让你整理一下:)。我在想也许我可以让它返回其中的组件并删除按钮。使用ProgressBar而不是ProgressMonitor。