2016-06-28 55 views
-1

我有一个要求,在选择按钮我需要处理一些东西,并根据结果必须设置文本在同一个按钮。以下是示例代码片段。在选择按钮内设置文本SWT中的同一个按钮的监听器

buttonOrganization = new Button(parent, SWT.PUSH); 

    OrgSelectionBtnListener listnerButton = new OrgSelectionBtnListener(buttonOrganization, Session, false, false); 
    buttonOrganization.addListener(SWT.Selection, 
      listnerButton); 

和OrgSelectionBtnListner类低于

private class OrgSelectionBtnListener implements Listener, 
PropertyChangeListener 
{ 

public OrgSelectionBtnListener(Button orgButton, Session Session, boolean isUser, boolean isGrp) 
{ 

} 
@Override 
public void propertyChange(PropertyChangeEvent evt) 
{ 
    String propName = evt.getPropertyName(); 
    if(propName.equals("OrgChanged")) 
    { 

     buttonOrganization.setText("new Group User"); 
    } 
} 

@Override 
public void handleEvent(Event arg0) 
{ 
    buttonOrganization = (Button) arg0.widget; 
    SwingUtilities.invokeLater(new Runnable() 
    { 
     //Display.getDefault().asyncExec(new Runnable() { 
     //@Override 
     public void run() 
     {    
      orgSelectionDialog.addPropertyChangeListener(OrgSelectionBtnListener.this); 
     } 
    }); 
} 

} 

得到任何帮助。

+0

你的代码看起来是正确的,你遇到了什么问题或错误? –

+0

它说** org.eclipse.swt.SWTException:无效的线程访问**指向线'buttonLoadUser.setText(“Demo User”);' –

+0

我想你需要向我们展示一个显示问题的[mcve]这通常不应该给无效的线程访问。 –

回答

0

使按钮变量私人或最终。通过使用匿名类选择监听器添加选择侦听器..

btn.addSelectionListener(new SelectionListener.... 

使用

btn.setText(”“)内执行的,并的setText方法你的任务;根据你的结果可以得到