2016-06-28 3 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のメソッド内で、あなたのタスクを実行...選択リスナーの匿名クラスを使用して選択リスナーを追加します。

あなたの結果によると。

関連する問題