java中SWT中进度条的使用
实际上,我正在使用线程更新代码块中的进度条,线程的run方法不起作用,因此,您能帮我解决这个问题吗?我正在使用SWT toolkit进行UI。java中SWT中进度条的使用,java,swt,Java,Swt,实际上,我正在使用线程更新代码块中的进度条,线程的run方法不起作用,因此,您能帮我解决这个问题吗?我正在使用SWT toolkit进行UI。 代码: //选择侦听器 tItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { T
代码: //选择侦听器
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].getText(1)+","+tableItems[i].getText(2)+","+tableItems[i].getText(3)+","+tableItems[i].getText(4)+","+tableItems[i].getText(5)+","+tableItems[i].getText(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;在这里使用线程实际上没有任何意义,因为您没有运行任何需要很长时间的操作。此外,设置进度条选择的循环除了将选择设置为最后一个值之外,不会执行任何操作-您不会得到任何动画或类似的操作。