2009-04-21 7 views
0

콘텐츠 영역 내부에서 특정 탭 표시 줄에 탭을 추가하려고합니다. 컨텐츠 영역은 동적이며 다른 클래스 파일에 위치합니다. 탭 막대의 현재 상태 (새 탭 막대 객체를 만들지 않음)를 얻는 유일한 방법은 객체에 액세스하기위한 정적 메서드와 변수를 만드는 것입니다. 그러나 그것을 얻은 후에 탭 막대에 수정을하는 데 문제가 있습니다. 문자열 검색과 같은 문제없이 그 안에 함수를 호출 할 수는 있지만 탭을 추가 할 수는 없습니다. 이는 내가해야 할 일입니다. XYZ라는 이름의다른 탭에서 GWT 탭 추가

에서 하나 개의 클래스 : 다음은 일반 요지의 내 다른 파일에

private static MyPersonalTabPanel mypersonalTabPanel; 

public XYZ { 
    myperosonalTabPanel = this; 
} 

, 버튼 클릭에,이 트리거 해요 :

MyPersonalTabPanel.getAppInstance().getXYZTabPanel().add(mywidget, "My Widget"); 

내가 사용할 수 있습니다 내 함수 "getXYZTabPanel()"은 오류없이 "추가"하려고하면 단순히 흰색 화면과 관련 오류가 발생하지 않습니다. 어떤 도움이 필요합니까? 이전에 프로젝트에서 탭을 추가 한 적이 있지만 이와 같은 정적 객체를 통해 프로젝트를 수행 할 수는 없습니다.

정적 인 세션 변수에 액세스하려면이 작업을 수행해야합니까? 기본적으로 페이지가로드되는 순간 호출됩니다.

+0

의도가 무엇인지 혼란스러워합니다. 다른 클래스의 탭을 추가하는 방법을 찾고 싶습니까? 또는 정적 필드를 사용하여 작동하게하는 방법을 묻고 있습니까? – Chii

답변

1

초기화 순서를 확인 하시겠습니까? 탭을 추가하려는 XYZ의 인스턴스가 가장 최근의 "new XYZ()"호출에 의해 생성 된 것임을 확인해야하며, 새 XYZ()를 호출하기 전에 이미 new'ed되었는지 확인해야합니다 탭을 추가하십시오.

또한, XYZ는 TabPanel을 확장하는 MyPersonalTabPanel을 확장한다고 가정합니다. 명확히하기 위해,이 코드는 사용자의 상황에 적용 않습니다

public class MyPersonalTabPanel extends TabPanel { 
    public static MyPersonalTabPanel instance; 

    public MyPersonalTabPanel() { 
    instance = this; 
    } 
} 

public class TestClass { 
    public void createPanel() { 
    RootPanel.get().add(new MyPersonalTabPanel()); 
    } 
    public void addTab(Widget widget) { 
    MyPersonalTabPanel.instance.add(widget, "My Widget"); 
    } 
} 

는 addTab (위젯) 호출이 발생하기 전에의 TestClass의 createPanel()가 호출되는 것을 확인합니다.

관련 문제