2014-12-13 71 views
0

我更新SWT。如何处置进度条?

这是显示进度条的代码。在我的应用程序中点击“取消”按钮时,应该运行进度条。这是工作..工作之后,它只是直到只显示..我的工作后如何杀死这个?

    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?? 
+0

正在完成的“工作”的代码在哪里? – Baz 2014-12-13 13:06:59

+0

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 { \t static Text text = null; \t final static Shell shell = null; \t公共静态无效的主要(字串[] args) \t { \t \t最终显示显示=新显示(); \t \t final Shell shell = new Shell(display); RowLayout rowLayout = new RowLayout(); shell.setLayout(rowLayout); shell.setLocation(-1,-7); \t \t shell.setBounds(0,0,1050,720); – afu 2014-12-13 13:47:40

+0

Label label = new Label(shell,SWT.NONE); \t \t label.setText(“Enter the text:”); text = new Text(shell,SWT.BORDER); final Button ok = new Button(shell,SWT.PUSH); \t \t ok.setText(“OK”); \t \t ok.addSelectionListener(新SelectionAdapter() \t \t { \t \t \t @Override \t \t \t公共无效widgetSelected(SelectionEvent E) \t \t \t { \t \t \t \t PV6.Pv6(确定,壳); \t \t \t} \t \t}); shell.pack(); \t \t shell.open(); (!shell.isDisposed())(!display.readAndDispatch()) 而 \t \t { \t \t \t如果display.sleep(); \t \t} \t \t显示。dispose(); \t} } – afu 2014-12-13 13:49:14

回答

0

我还不能说我完全理解你的问题。我不知道什么时候你要处置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(); 
} 

然后,只需调用disposeProgressBar()当你想ProgressBar待处置。

+0

谢谢巴兹你的答案。如果第二个窗口开始显示,那么进度条应该处理。我想我在错误的地方调用这个方法?在哪里调用这个方法? – afu 2014-12-15 11:41:54

+0

@AfshanAhamed因为我还不明白你实际上想做什么,我无法真正帮助你。如果您可以创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)(我可以复制/粘贴并运行),并描述期望的结果是什么以及为什么当前结果不是你想要的,那么我可能会帮助你。 – Baz 2014-12-15 11:45:07

+0

一旦ok按钮被点击,另一个窗口开始显示..因为我必须显示进度条..进度条显示..到这个没问题..当我开始在第二个窗口工作后,进度条应该不可见..我的代码没有隐藏进度条之后的目的。在这里我无法将图像粘贴到我的输出中。请问您可以给您的邮件ID吗? – afu 2014-12-15 11:49:48