当前位置: 代码迷 >> Eclipse >> 新手关于SWT UI线程与非UI线程实现信息交互的有关问题
  详细解决方案

新手关于SWT UI线程与非UI线程实现信息交互的有关问题

热度:77   发布时间:2016-04-23 02:02:46.0
新手关于SWT UI线程与非UI线程实现信息交互的问题
最近,在公司开发一插件,要求发送指令连接硬件,然后得到连接信息(无论正确与否),返回显示在一个Text中

因为刚出来实习,第一次做项目而且是在不怎么熟悉的linux下,有点手忙脚乱,

执行的结果是第一次能读取,但是不能再次读取,求大神指点迷津

connect是第一次操作,send是第2次操作;

代码如下


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.internal.handlers.WizardHandler.New;


public class DownloadView extends  Dialog{ 

private String message;
private Process command;
private Text text;
private Text address_t;
private String exec_f; 
private String down_f; 
private String address; 
private Button discButton;
private InputStream i;
private BufferedReader reader;
private boolean flag=false;
String str;

 static String s1;
 private int  c;
 private int c1;
 
 InputStreamReader reader1;
public DownloadView(Shell parentShell) {
super(parentShell);
}
protected void createButtonsForButtonBar(Composite parent) {  
//重写父类方法,取消自带的OK  cancel按钮
}

//重写父类方法,定义自己的组件
protected  Control  createDialogArea(Composite parent) {
this.getShell().setText("JLINK");
Composite com=new Composite(parent, SWT.None);
GridLayout lay=new GridLayout();
lay.numColumns = 1;
setMyLayout(lay);
com.setLayout(lay);
com.setLayoutData(new GridData(GridData.FILL_BOTH));

Composite composite=new Composite(com, SWT.None);
GridLayout layout=new GridLayout();
layout.numColumns = 3;
setMyLayout(layout);
composite.setLayout(layout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));


//连接按钮的处理
Button ConnectButton =new Button(composite, SWT.None);
ConnectButton.setText("CONNECT");
ConnectButton.addSelectionListener(new SelectionAdapter()  {
@Override
public void widgetSelected(SelectionEvent e) {
// TODO Auto-generated method stub
message="sudo ejtag";
discButton.setEnabled(true);
doIt(message);
new MyThread().start();
System.out.println("线程已经启动");
System.out.println(message);
}
});
  相关解决方案