swt进度条 线程

Posted 千彧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swt进度条 线程相关的知识,希望对你有一定的参考价值。

 

  1 import org.eclipse.swt.widgets.Display;
  2 import org.eclipse.swt.widgets.Shell;
  3 
  4 import java.util.Random;   
  5 
  6 import org.eclipse.swt.SWT;   
  7 import org.eclipse.swt.events.SelectionAdapter;   
  8 import org.eclipse.swt.events.SelectionEvent;   
  9 import org.eclipse.swt.layout.GridData;   
 10 import org.eclipse.swt.layout.GridLayout;   
 11 import org.eclipse.swt.widgets.Button;   
 12 import org.eclipse.swt.widgets.Display;   
 13 import org.eclipse.swt.widgets.Group;   
 14 import org.eclipse.swt.widgets.Label;   
 15 import org.eclipse.swt.widgets.ProgressBar;   
 16 import org.eclipse.swt.widgets.Scale;   
 17 import org.eclipse.swt.widgets.Shell;   
 18 import org.eclipse.swt.widgets.Spinner;   
 19    
 20    
 21 public class threadtest{   
 22     public threadtest thisme=this ;   
 23     private Spinner spinner_1;   
 24     private Scale scale;   
 25     ProgressBar progressBar;   
 26     private Button button;   
 27     private Button button_1;   
 28     private Button button_2;   
 29     Button button_3;   
 30     private Button button_4;   
 31     private Button button_5;   
 32     private Button button_6;   
 33     private Button button_7;   
 34     private Group group;   
 35     Spinner spinner;   
 36     private Mythread mythread;   
 37     protected Shell shell;   
 38     /**  
 39      * Launch the application  
 40      * @param args  
 41      */   
 42     public static void main(String[] args) {   
 43         try {   
 44             threadtest window = new threadtest();   
 45             window.open();   
 46         } catch (Exception e) {   
 47             e.printStackTrace();   
 48         }   
 49     }   
 50    
 51     /**  
 52      * Open the window  
 53      */   
 54     public void open() {   
 55         final Display display = Display.getDefault();   
 56         createContents();   
 57         shell.open();   
 58         shell.layout();   
 59         while (!shell.isDisposed()) {   
 60             if (!display.readAndDispatch())   
 61                 display.sleep();   
 62         }   
 63     }   
 64    
 65     /**  
 66      * Create contents of the window  
 67      */   
 68     protected void createContents() {   
 69         shell = new Shell();   
 70         shell.setLayout(new GridLayout());   
 71         shell.setSize(500, 375);   
 72         shell.setText("SWT Application");   
 73         //   
 74         oo(shell);   
 75     }   
 76    
 77     void oo(Shell shell2) {   
 78         // TODO 自动生成方法存根   
 79         group = new Group(shell2, SWT.NONE);   
 80         group.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));   
 81 //      group = new Group(shell, SWT.NONE);   
 82         final GridLayout gridLayout = new GridLayout();   
 83         gridLayout.numColumns = 8;   
 84         group.setLayout(gridLayout);   
 85         group.setText("线程一");   
 86         button = new Button(group, SWT.NONE);   
 87         button.addSelectionListener(new SelectionAdapter() {   
 88             public void widgetSelected(SelectionEvent arg0) {   
 89 //              System.out.println(spinner_1);   
 90                 mythread = new Mythread(thisme);   
 91                 mythread.start();   
 92                 button.setEnabled(!button.getEnabled());   
 93                 button_2.setEnabled(!button_2.getEnabled());   
 94             }   
 95         });   
 96         button.setText("启动");   
 97    
 98         button_2 = new Button(group, SWT.NONE);   
 99         button_2.setEnabled(false);   
100         button_2.setText("停止");   
101         button_2.addSelectionListener(new SelectionAdapter() {   
102             @SuppressWarnings("deprecation")   
103             public void widgetSelected(SelectionEvent arg0) {   
104                 mythread.stop();   
105                 button.setEnabled(!button.getEnabled());   
106                 button_2.setEnabled(!button_2.getEnabled());   
107             }   
108         });   
109    
110         button_1 = new Button(group, SWT.NONE);   
111         button_1.setEnabled(false);   
112         button_1.setText("暂停");   
113    
114         button_4 = new Button(group, SWT.NONE);   
115         button_4.addSelectionListener(new SelectionAdapter() {   
116             public void widgetSelected(SelectionEvent arg0) {   
117                 mythread.sleeptime=spinner_1.getSelection();   
118                 mythread.sleeptrue=true;   
119                 System.out.println(spinner_1.getSelection());   
120             }   
121         });   
122         button_4.setText("睡眠");   
123    
124         button_5 = new Button(group, SWT.NONE);   
125         button_5.addSelectionListener(new SelectionAdapter() {   
126             public void widgetSelected(SelectionEvent arg0) {   
127                 mythread.suspend();   
128             }   
129         });   
130         button_5.setText("挂起");   
131    
132         button_6 = new Button(group, SWT.NONE);   
133         button_6.addSelectionListener(new SelectionAdapter() {   
134             public void widgetSelected(SelectionEvent arg0) {   
135                 mythread.resume();   
136             }   
137         });   
138         button_6.setText("恢复");   
139    
140         spinner = new Spinner(group, SWT.BORDER);   
141    
142         button_3 = new Button(group, SWT.TOGGLE);   
143         button_3.setSelection(true);   
144         button_3.setText("随机速度");   
145    
146         progressBar = new ProgressBar(group, SWT.NONE);   
147         progressBar.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 8, 1));   
148    
149         new Label(group, SWT.NONE).setText("休眠");   
150    
151         spinner_1 = new Spinner(group, SWT.BORDER);   
152         spinner_1.setMaximum(10000);   
153         spinner_1.addSelectionListener(new SelectionAdapter() {   
154             public void widgetSelected(SelectionEvent arg0) {   
155                 scale.setSelection(spinner_1.getSelection());   
156             }   
157         });   
158    
159         new Label(group, SWT.NONE).setText("毫秒");   
160    
161         scale = new Scale(group, SWT.NONE);   
162         scale.setRedraw(true);   
163         scale.setPageIncrement(1000);   
164         scale.setIncrement(1000);   
165         scale.addSelectionListener(new SelectionAdapter() {   
166             public void widgetSelected(SelectionEvent arg0) {   
167                 spinner_1.setSelection(scale.getSelection());   
168             }   
169         });   
170         scale.setMaximum(10000);   
171         scale.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1));   
172    
173     }   
174    
175     public void sd(int ss) {   
176         mythread.sd=spinner.getSelection();   
177         progressBar.setSelection(ss++);   
178     }   
179    
180     public void sd() {   
181         if(button_3.getSelection()){   
182             spinner.setSelection((int) (new Random().nextDouble()*100));   
183         }   
184     }   
185    
186 }   

 

 

 1 import org.eclipse.swt.widgets.Display;
 2 import org.eclipse.swt.widgets.Shell;
 3 
 4 import java.util.Random;   
 5 
 6 import org.eclipse.swt.events.SelectionAdapter;   
 7 import org.eclipse.swt.widgets.Button;   
 8 import org.eclipse.swt.widgets.Display;   
 9 import org.eclipse.swt.widgets.Group;   
10 import org.eclipse.swt.widgets.ProgressBar;   
11 import org.eclipse.swt.widgets.Scale;   
12 import org.eclipse.swt.widgets.Shell;   
13 import org.eclipse.swt.widgets.Spinner;   
14    
15    
16  class Mythread extends Thread{   
17     int sd=0;   
18     private int i=0;   
19     public threadtest thisme;   
20     int sleeptime=0;   
21     boolean taskrun=true;   
22     public boolean sleeptrue=false;   
23    
24    
25    
26     public Mythread(threadtest thisme) {   
27         this.thisme=thisme;   
28     }   
29     public void run() {   
30         while (true) {   
31             if(i>100|i==0){   
32                 i=0;   
33                 sd1();   
34             }   
35             i++;   
36             if(sleeptrue){   
37                 try {   
38                     Thread.sleep(sleeptime);   
39                     sleeptrue=false;   
40                 } catch (InterruptedException e) {    
41                     e.printStackTrace();   
42                 }   
43                    
44             }   
45             sds();   
46             try {   
47                 Thread.sleep(100-sd);   
48             } catch (InterruptedException e) {   
49                 e.printStackTrace();   
50             }   
51         }          
52        
53            
54     }   
55     private void sd1() {   
56         Display.getDefault().syncExec(new Runnable() {   
57             public void run() {   
58                 thisme.sd();   
59             }   
60         });   
61     }   
62     private void sds() {   
63         Display.getDefault().syncExec(new Runnable() {   
64             public void run() {   
65 //              System.out.println(i);   
66                 thisme.sd(i);   
67             }   
68         });   
69     }   
70    
71 }   

 

 1 import org.eclipse.swt.widgets.Display;
 2 import org.eclipse.swt.widgets.Shell;
 3 
 4 import org.eclipse.swt.SWT;   
 5 import org.eclipse.swt.events.SelectionAdapter;   
 6 import org.eclipse.swt.events.SelectionEvent;   
 7 import org.eclipse.swt.layout.GridData;   
 8 import org.eclipse.swt.layout.GridLayout;   
 9 import org.eclipse.swt.widgets.Button;   
10 import org.eclipse.swt.widgets.Display;   
11 import org.eclipse.swt.widgets.Group;   
12 import org.eclipse.swt.widgets.Label;   
13 import org.eclipse.swt.widgets.ProgressBar;   
14 import org.eclipse.swt.widgets.Scale;   
15 import org.eclipse.swt.widgets.Shell;   
16 import org.eclipse.swt.widgets.Spinner;   
17    
18    
19 public class thread {   
20    
21     private Spinner spinner_1;   
22     private Scale scale;   
23     private ProgressBar progressBar;   
24     public Button button;   
25     public Button button_1;   
26     public Button button_2;   
27     public Button button_3;   
28     public Button button_4;   
29     public Button button_5;   
30     public Button button_6;   
31     public Button button_7;   
32     protected Shell shell;   
33     public Group group;   
34     public Spinner spinner;   
35 //  Mythread mythread;   
36     /**  
37      * Launch the application  
38      * @param args  
39      */   
40     public static void main(String[] args) {   
41         try {   
42             thread window = new thread();   
43             window.open();   
44         } catch (Exception e) {   
45             e.printStackTrace();   
46         }   
47     }   
48    
49     /**  
50      * Open the window  
51      */   
52     public void open() {   
53         final Display display = Display.getDefault();   
54         createContents();   
55         shell.open();   
56         shell.layout();   
57         while (!shell.isDisposed()) {   
58             if (!display.readAndDispatch())   
59                 display.sleep();   
60         }   
61     }   
62    
63     /**  
64      * Create contents of the window  
65      */   
66     protected void createContents() {   
67         shell = new Shell();   
68         shell.setLayout(new GridLayout());   
69         shell.setSize(500, 375);   
70         shell.setText("SWT Application");   
71         threadtest[] tt=    new threadtest[6];   
72         for (int i = 0; i < tt.length; i++) {   
73             tt[i]=new threadtest();   
74         }      
75         for (int i = 0; i < tt.length; i++) {   
76             tt[i].oo(shell);   
77         }      
78     }   
79    
80 }   

 

以上是关于swt进度条 线程的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 SWT 进度条的颜色?

当片段视图加载是异步任务的一部分时,如何在片段加载之前显示进度条?

自定义对话框片段内的进度条 - 如何从 AsyncTask 传递进度?

在recyclerview片段Reandroid中屏幕旋转后进度条不显示

css Bootstrap 3进度条片段

进度条不隐藏是当数据在片段中的recyclerview中加载时