2016-06-28 1 views
-1

버튼을 선택할 때 어떤 물건을 처리해야하고 결과에 따라 동일한 버튼에 텍스트를 설정해야하는 요구 사항이 있습니다. 아래는 샘플 스 니펫입니다.Button 내부의 텍스트 설정 SWT의 동일한 버튼의 Listener

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); 
     } 
    }); 
} 

} 

어떤 도움을 주셔서 감사합니다 아래

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

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

은과 OrgSelectionBtnListner 클래스입니다.

+0

코드가 올바른 것 같습니다. 어떤 문제가 있거나 오류가 발생합니까? –

+0

그것은 ** org.eclipse.swt.SWTException을 말합니다 :'buttonLoadUser.setText ("Demo User"); ' –

+0

행을 가리키는 잘못된 스레드 접근 ** 문제를 보여주는 [mcve]를 보여줄 필요가 있다고 생각합니다. 이것은 일반적으로 잘못된 스레드 액세스를 제공해서는 안됩니다. –

답변

0

버튼 변수를 비공개 또는 최종 변경합니다.

btn.addSelectionListener(new SelectionListener.... 

btn.setText를 ("")를 사용하여와의 setText 방법 내부에 작업을 수행 .. 선택 리스너의 익명 클래스를 사용하여 선택 리스너를 추가;

귀하의 결과에 따르면.

관련 문제