Java 如何处理进度条?
我喜欢SWT 这是显示进度条的代码。在我的应用程序中单击“取消”按钮时,应运行进度条。它正在工作。。工作结束后,它也只显示出来。。我下班后怎么杀了这个Java 如何处理进度条?,java,swt,Java,Swt,我喜欢SWT 这是显示进度条的代码。在我的应用程序中单击“取消”按钮时,应运行进度条。它正在工作。。工作结束后,它也只显示出来。。我下班后怎么杀了这个 public static void Pv7(Button ok, Shell shell2) { shell=shell2; final ProgressBar pb
public static void Pv7(Button ok, Shell shell2)
{
shell=shell2;
final ProgressBar pb3 = new ProgressBar(shell, SWT.SMOOTH);
shell.setLayout(new RowLayout());
shell.setSize(1500, 1000);
pb3.setSelection(500);
pb3.setBounds(100, 40, 200, 20);
Label label3 = new Label(shell, SWT.NULL);
//label2.setText("Success");
label3.setAlignment(SWT.LEFT);
label3.setBounds(10, 40, 80, 20);
}
__________________
My code is displaying the progress after the process also. How to dispose the progress bar the after the another shell window opened??
This is my main program:
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class Practice1
{
static Text text = null;
final static Shell shell = null;
public static void main (String [] args)
{
final Display display =new Display();
final Shell shell=new Shell(display);
RowLayout rowLayout = new RowLayout();
shell.setLayout(rowLayout);
shell.setLocation(-1,-7);
shell.setBounds(0, 0, 1050, 720);
Label label = new Label (shell, SWT.NONE);
label.setText ("Enter the text:");
text = new Text (shell, SWT.BORDER);
final Button ok = new Button (shell, SWT.PUSH);
ok.setText ("OK");
ok.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
PV6.Pv6(ok,shell);
}
});
Button cancel = new Button (shell, SWT.PUSH);
cancel.setText ("Cancel");
cancel.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
System.out.println("Cancel");
System.out.println("User cancelled dialog");
shell.setVisible(false);
}
});
shell.addListener(SWT.Close, new Listener()
{
public void handleEvent(Event event)
{
int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
MessageBox messageBox = new MessageBox(shell, style);
messageBox.setText("Information");
messageBox.setMessage("Close the shell?");
event.doit = messageBox.open() == SWT.YES;
}
});
shell.setDefaultButton (cancel);
/*print the ID in the console area**/
ok.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
System.out.println(text.getText());
}
});
//Creating another shell
ok.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
System.out.println(text.getText());
final Shell dialog = new Shell (shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
dialog.setText("Dialog Shell");
dialog.setBounds(50,100, 10, 10);
FormLayout formLayout = new FormLayout ();
formLayout.marginWidth = 10;
formLayout.marginHeight = 10;
dialog.setLayout (formLayout);
Label label = new Label (dialog, SWT.NONE);
label.setText ("Type a Name:");
FormData data = new FormData ();
label.setLayoutData (data);
Button cancel = new Button (dialog, SWT.PUSH);
cancel.setText ("Cancel");
data = new FormData ();
data.width = 60;
data.right = new FormAttachment (100, 0);
data.bottom = new FormAttachment (100, 0);
cancel.setLayoutData (data);
cancel.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
System.out.println("User cancelled dialog");
dialog.close ();
}
});
text = new Text (dialog, SWT.BORDER);
data = new FormData ();
data.width = 200;
data.left = new FormAttachment (label, 0, SWT.DEFAULT);
data.right = new FormAttachment (100, 0);
data.top = new FormAttachment (label, 0, SWT.CENTER);
data.bottom = new FormAttachment (cancel, 0, SWT.DEFAULT);
text.setLayoutData (data);
final Button ok = new Button (dialog, SWT.PUSH);
ok.setText ("OK");
data = new FormData ();
data.width = 60;
data.right = new FormAttachment (cancel, 0, SWT.DEFAULT);
data.bottom = new FormAttachment (100, 0);
ok.setLayoutData (data);
ok.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
System.out.println (" " + text.getText ());
PV6.Pv6(ok,shell);
// dialog.close ();
}
});
//Creating another shell
ok.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
//PV6.Pv6(ok,shell);
System.out.println(text.getText());
final Shell dialog = new Shell (shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
dialog.setText("Dialog Shell");
FormLayout formLayout = new FormLayout ();
formLayout.marginWidth = 50;
formLayout.marginHeight = 10;
formLayout.spacing = 100;
dialog.setLayout (formLayout);
Label label = new Label (dialog, SWT.NONE);
label.setText ("Type a Name:");
FormData data = new FormData ();
label.setLayoutData (data);
Button cancel = new Button (dialog, SWT.PUSH);
cancel.setText ("Cancel");
data = new FormData ();
data.width = 60;
data.right = new FormAttachment (100, 0);
data.bottom = new FormAttachment (100, 0);
cancel.setLayoutData (data);
cancel.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
System.out.println("User cancelled dialog");
dialog.close ();
}
});
text = new Text (dialog, SWT.BORDER);
data = new FormData ();
data.width = 200;
data.left = new FormAttachment (label, 0, SWT.DEFAULT);
data.right = new FormAttachment (100, 0);
data.top = new FormAttachment (label, 0, SWT.CENTER);
data.bottom = new FormAttachment (cancel, 0, SWT.DEFAULT);
text.setLayoutData (data);
final Button ok = new Button (dialog, SWT.PUSH);
ok.setText ("OK");
data = new FormData ();
data.width = 60;
data.right = new FormAttachment (cancel, 0, SWT.DEFAULT);
data.bottom = new FormAttachment (100, 0);
ok.setLayoutData (data);
ok.addSelectionListener (new SelectionAdapter ()
{
@Override
public void widgetSelected (SelectionEvent e)
{
System.out.println ("User typed: " + text.getText ());
PV6.Pv6(ok,shell);
// dialog.close ();
}
}); dialog.setDefaultButton (ok);
dialog.pack ();
dialog.open ();
}
});
dialog.setDefaultButton (ok);
dialog.pack ();
dialog.open ();
// Move the dialog to the center of the top level shell.
Rectangle shellBounds = shell.getBounds();
Point dialogSize = dialog.getSize();
//shell.setBounds(0, 0, 1050, 720);
dialog.setLocation(
shellBounds.x + (shellBounds.width - dialogSize.x) / 2,
shellBounds.y + (shellBounds.height - dialogSize.y) / 2);
}
});
shell.pack ();
shell.open ();
while (!shell.isDisposed ())
{
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}
Any one help me for dispose the progress bar??
我仍然不能说我完全理解你的问题。我不知道您到底什么时候想要处理ProgressBar,但我将解释如何处理它,然后您决定何时调用该方法:
private static Shell shell;
private static ProgressBar bar;
public static void Pv7(Button ok, Shell shell2)
{
shell=shell2;
if(bar != null && !bar.isDisposed())
bar.dispose();
bar = new ProgressBar(shell, SWT.SMOOTH);
shell.setLayout(new RowLayout());
shell.setSize(1500, 1000);
pb3.setSelection(500);
Label label3 = new Label(shell, SWT.NULL);
label3.setAlignment(SWT.LEFT);
}
public static void disposeProgressBar()
{
if(bar != null && !bar.idDisposed())
bar.dispose();
}
然后,当您希望处理ProgressBar时,只需调用disposeProgressBar。正在执行的工作的代码在哪里?import org.eclipse.swt.*;导入org.eclipse.swt.events.*;导入org.eclipse.swt.graphics.Point;导入org.eclipse.swt.graphics.Rectangle;导入org.eclipse.swt.layout.*;导入org.eclipse.swt.widgets.*;公共类Practice1{static Text Text Text=null;最终静态Shell=null;公共静态void主字符串[]args{final Display Display=new Display;final Shell Shell Shell=new Shell Display;RowLayout RowLayout=new RowLayout;Shell.setLayoutLowLayout;Shell.setLocation-1,-7;Shell.setBounds0,0,1050,720;Label Label Label Label=new Label Shell,SWT.NONE;Label.setText输入文本:;text=新文本Shell,SWT.BORDER;final Button ok=新按钮Shell,SWT.PUSH;ok.setText ok;ok.addSelectionListener新选择适配器{@Override public void widgetSelectedSelectionEvent e{PV6.Pv6ok,shell;}}};shell.pack;shell.open;while!shell.isDisposed{if!display.readAndDispatch display.sleep;}display.dispose;}请回答您的问题并在此处添加代码,注释中无法阅读。问题@Baz中添加的代码谢谢您的回答。如果第二个窗口开始显示,则进度条应进行处理。我认为调用此方法的位置不对?在哪里调用此方法?@AfshanAhamed,因为我仍然不明白您的实际操作如果你能创建一个我可以复制/粘贴并运行的东西,并描述期望的结果是什么,以及为什么当前结果不是你想要的,那么我可能能够帮助你。单击“确定”按钮后,另一个窗口开始显示..为此,我必须显示进度条..进度bar正在显示..到此为止没有问题..在我开始在第二个窗口中工作后,进度条应该不可见..我的代码并没有为此目的隐藏进度条。我无法为我的输出粘贴图像..你能提供你的邮件id吗?@AfshanAhamed不,对不起,我没有透露我的电子邮件地址。请考虑呃,正如我在上一条评论中所写的,否则我将无法帮助您。@Baz。代码应该以一个空白画布开始,画布上只有“保存”按钮。单击“保存”按钮时,将弹出一个进度查看器并处理到10秒。然后,将显示一个弹出窗口,说明已成功保存,并显示“确定”和“关闭”按钮返回第一个屏幕,仅显示save按钮。progress viewer的位置应位于save按钮的正下方。在显示progress viewer时,应传递一个参数,例如10秒。如果我们想将其更改为15,则应仅更改参数值