2014-02-15 1 views
0

사용자 인터페이스 용 SWT를 사용하여 간단한 Java 응용 프로그램을 개발 중입니다. 모든 것이 잘 작동하지만 변수 선언 순서와 관련된 문제가 있습니다 (내 첫 번째 SWT 응용 프로그램입니다).SWT 변수 선언 순서에 관한 문제

btnStop 및 btnStart라는 두 개의 버튼이 있으며 SelectionAdapter 이벤트가 첨부되어 있습니다.

은 가지고 있어야 동작입니다 :
  • I 버튼 btnStart 클릭

    , 그 이벤트가 btnStard이 비활성화 설정해야하고 btnStop가 활성화;
  • 동일 버튼의 경우 btnStop : 다른 이벤트는 btnStop 자체를 비활성화하고 btnStart를 활성화해야합니다.

사실이다 : 나는 btnStart 전에 btnStop를 선언하는 경우 이클립스 (선언 순서에 따라) 두 변수 중 하나가 초기화되지 않았 음을 말한다 이후의 이전 이벤트가 후자 장애인과 그 반대의 경우도 마찬가지을 설정할 수 없습니다.

final Button btnStop = new Button(shlFinalFantasyXiv, SWT.NONE); 

    btnStop.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(SelectionEvent e) { 
      Check.keepPinging = false;   
      comboServer.setEnabled(true); 
      btnStart.setEnabled(true); // <- ERROR HERE 
      btnStop.setEnabled(false); 

     } 
    }); 
    btnStop.setBounds(357, 106, 75, 25); 
    btnStop.setText("Stop"); 

final Button btnStart = new Button(shlFinalFantasyXiv, SWT.NONE); 

    btnStart.addSelectionListener(new SelectionAdapter() { 

     // some stuff 
     } 

당신이 어떤 조언이 있다면, 그것은 매우 감사 할 것 :

다음은 코드의 일부입니다. 귀하의 도움에 미리 감사드립니다.

답변

1

그냥 당신이 두 버튼을 선언 할 때까지 선택 리스너를 설정하지 : 그런데

final Button btnStop = new Button(shlFinalFantasyXiv, SWT.NONE); 
// set text, layout 

final Button btnStart = new Button(shlFinalFantasyXiv, SWT.NONE); 
// set text, layout 

btnStop.addSelectionListener(new SelectionAdapter() { 
    // code 
} 

btnStart.addSelectionListener(new SelectionAdapter() { 
    // some stuff 
} 

이 컨트롤을 배치하는 Layouts을 사용하는 방법을 배울 수 있습니다. setBounds을 사용하면 사용 된 글꼴이 바뀌면 사물이 엉망이됩니다.

+0

좋아요! 이제 작동합니다! 버튼 선언 직후 메서드를 정의해야한다고 생각했지만 잘못되었습니다. 또한 튜토리얼, 도움을 주셔서 감사합니다. – Nick0602

+0

언제든지 청취자를 추가 (및 제거) 할 수 있습니다. –

0

두 버튼 모두에 대해 하나의 전역 ActionListener가 필요합니다. 버튼을 눌렀을 때를 결정하고 하나를 활성화하고 다른 버튼을 비활성화합니다.

는 개념이 장 "다중 소스"에 설명되어이 turorial 살펴 유무 : http://zetcode.com/tutorials/javaswingtutorial/swingevents/

멋져요 SWT를 사용하여,하지만 개념은 스윙에서 동일합니다.

+0

답장을 보내 주셔서 감사합니다. – Nick0602