2016-06-28 85 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方法你的任務;根據你的結果可以得到