2016-10-13 3 views
1

두 개의 마법사 페이지 (org.eclipse.jface.wizard.WizardPage)가 포함 된 Wizard을 가지고 있으며 각 페이지의 포커스를 항상 설정하여 각 페이지의 맨 위 입력 필드에 항상 초점을 맞추고 싶습니다.마법사 페이지에서 포커스를 설정할 위치는?

WizardPage.createControl(Composite)에 포커스를 설정하면 첫 번째 페이지 포커스가 올바르게 설정됩니다. 두 번째 페이지에는 포커스가 없습니다. 처음에는 모든 페이지를 만드는 Wizard.createPageControls(Composite)이 원인입니다.

다음 마법사 페이지로 전환 한 후 포커스를 처리 할 위치는 어디입니까? 페이지가 표시 될 때

답변

3
WizardPage setVisible 방법 및 설정 초점을 무시

:

@Override 
public void setVisible(boolean visible) { 
    super.setVisible(visible); 

    if (visible) { 
     // TODO set focus 
    } 
} 
+0

좋아, 나는 그것을 사용합니다. 단지 기록을 위해'super.setVisible (visible)'이 호출되었는지 확인하십시오. 이것은'control'의 가시성을 처리합니다. –

+0

예, 답장을 위해 수퍼 전화가 추가되었습니다 –

1

JFace는 마법사가 포커스를 설정하기 위해 지정된 후크를 제공하지 않습니다. 그러나 Greg 이미 언급 한대로 setVisible() 메서드를 사용하여 마법사 페이지의 초기 포커스를 설정할 수 있습니다.

일반적으로 마법사 페이지의 포커스는 페이지를 처음 표시 할 때만 설정해야합니다. 사용자가 페이지로 돌아 가면 페이지가 남아있을 때의 위치가 포커스를 유지해야합니다. 이 경우에만 실행되도록 페이지가 처음 표시 될 때

그러므로, 나는 보통 초점 코드를 보호 :

private boolean firstTimeShown = true; 

@Override 
public void setVisible(boolean visible) { 
    super.setVisible(visible); 
    if(visible && firstTimeShown) { 
    firstTimeShown = False; 
    control.setFocus(); 
    } 
} 
+0

감사합니다 Rüdiger. 단지 기록을 위해'super.setVisible (visible)'이 호출되었는지 확인하십시오. 이것은'control'의 가시성을 처리합니다. –

+0

힌트를 보내 주셔서 감사합니다. 답변에 수퍼 전화를 추가했습니다. –

관련 문제