java中SWT中进度条的使用

java中SWT中进度条的使用,java,swt,Java,Swt,实际上,我正在使用线程更新代码块中的进度条,线程的run方法不起作用,因此,您能帮我解决这个问题吗?我正在使用SWT toolkit进行UI。 代码: //选择侦听器 tItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { T

实际上,我正在使用线程更新代码块中的进度条,线程的run方法不起作用,因此,您能帮我解决这个问题吗?我正在使用SWT toolkit进行UI。
代码:

//选择侦听器

    tItem.addSelectionListener(new SelectionAdapter() {
                        public void widgetSelected(SelectionEvent e) 
                        {
             TableItem[] tableItems =table.getItems();
                        int c=0;
                int inty=table.getSelectionIndex();
                  for(int i=table.getSelectionIndex();i<tableItems.length;i‌++)
                   {    
                        if(c==0)
                        {
                          column = new TableColumn(table, SWT.CENTER);       
     //reading content from the table        Stringline=tableItems[i].getText(0)+","+tableItems[i].getTex‌t(1)+","+tableItems[‌​i].getText(2)+","+ta‌​bleItems[i].getText(‌​3)+","+tableItems[i]‌​.getText(4)+","+tabl‌​eItems[i].getText(5)‌​+","+tableItems[i].g‌​etText(6);
                         System.out.println("\n line value is "+line);
                        String split= ",";
                        String error=",,,,,,";
                        if(line.equals(error))
                        {
                        break;
                        }
                    else {while ((line!= null))
                    String[]com = line.split(split,20);
                    String result =null;
//checking whether the value in it is enable or n
                    if(com[0].contains("ENABLE"))
                    { result = "RESULTS"; 
                    continue;}
                    if(com[0].equals("N"))
                    {result = "No";} 
                    else if(com[2].startsWith("S=") )
                    {
                     String O=tableItems[i].getText(7);
                     String[] part = O.split("=");
                     String string2 = part[1];
                     a=Integer.parseInt(string2);
    //declaration of the thread
                     final Thread thread = new Thread()
                    {public void run() 
                    {for(int i=0; i<=a; i++) 
                    {
                    final int value = i;
                    try {
                    Display.getDefault().asyncExec(newRunnable() 
                    {
                        public void run() 
                    { 
    //assigning value to the progress bar
    pbar.setSelection(value);
                    }
                    });
                    }   
                    catch (Exception e) 
                    {
                    System.out.println("Warning");
                     } 
                    } 
                    }
                    thread.start(); 
                    inty++;
                    break;
                    }
    }
    });
tItem.addSelectionListener(新的SelectionAdapter(){
公共无效WidgeSelected(SelectionEvent e)
{
TableItem[]tableItems=table.getItems();
int c=0;
int inty=table.getSelectionIndex();

for(int i=table.getSelectionIndex();iswingworker/separate thread.@XtremeBaumer SwingWorker用于Swing not Swit听起来像是在用户界面线程中运行代码-您不能这样做,因为它会阻塞UI。长时间运行的代码必须在单独的线程中。向我们显示最终线程线程=新线程(){public void run(){for(int i=0;在这里使用线程实际上没有任何意义,因为您没有运行任何需要很长时间的操作。此外,设置进度条选择的循环除了将选择设置为最后一个值之外,不会执行任何操作-您不会得到任何动画或类似的操作。