2016-06-23 4 views
0

현재 Open Office Extension에서 작업 중이며 한 번에 문제가 있습니다. 3 개의 텍스트 필드가있는 OpenOffice Writer 탭에서 설정 페이지를 만들었습니다. 사용자가이 필드에 입력 한 텍스트를 가져 오려고합니다.Open Office Extension이 설정 페이지에서 텍스트 필드의 값을 가져옴

XControl textfield2 = _xControlCont.getControl("TextField2"); 


    XTextComponent username = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class, textfield2); 


    passwd = password.getText(); 

내가 바로 시작 부분에 Nullpointer 예외를 얻고와 Optionspage가 열려 있지 때이 문제는이 코드로 내가 텍스트 필드의 값을 얻을 질수 있다고 생각 :

나는이 시도 .

입력 된 모든 값이 올바른지 그리고 서버에 연결할 수 있는지 테스트하는 별도의 클래스에서 동일한 코드를 실행하고 있습니다. getter 메서드를 사용하여 코드를 가져 오려고했지만이 방법도 효과가 없었습니다.

@Override 
    public void actionPerformed(ActionEvent actionEvent) { 
    boolean testConnection = false; 
    XControl label = _xControlCont.getControl("Label4"); 
    XFixedText xLabel = (XFixedText) UnoRuntime.queryInterface(XFixedText.class, label); 


    XControl textfield2 = _xControlCont.getControl("TextField2"); 



    XTextComponent username = (XTextComponent) UnoRuntime.queryInterface(XTextComponent.class, textfield2); 



    user = username.getText();} 

과 그때 게터를 사용하고,이 방법은 외부에서 여기

는 일례이다. org.openoffice.demo.DocumentUpload.run (DocumentUpload.java:56)에서 스레드 "스레드-15"java.lang.NullPointerException이 에서

예외

: 이 내가 점점 오전 예외입니다

여러분 중 한 분이 저를 도울 수 있기를 바랍니다.

+0

올바르게 이해하면이 코드는 올바르게 작동합니다 :'passwd = password.getText();'. 문제가 발생한 코드를 게시하십시오. 또한 오류 메시지 또는 잘못된 동작은 무엇입니까? http://stackoverflow.com/help/how-to-ask를 참조하십시오. –

+0

가 추가되었습니다. – FreeKill

+0

오류가 발생한 위치를 보여주는 전체 예외 메시지를 게시하십시오. 또한'_xControlCont'는 어디에 정의되어 있습니까? 아마도 TextField2라는 컨트롤이 없을 것입니다. 가능한 경우 문제를 나타내는 [MCVE] (http://stackoverflow.com/help/mcve)를 작성하십시오. org.openoffice.demo.DocumentUpload.run (DocumentUpload.java:56) –

답변

0

분명히 _xControlCont이 null입니다. 코드를 사용하기 전에 항상 객체를 생성해야합니다.

XControlContainer을 사용하는 예가 있습니다.

편집 : 페이지가 열려 있지 않은 경우

가 텍스트 필드에 액세스하지 마십시오. 대신 페이지가 열려있을 때 텍스트 필드의 문자열을 변수에 저장하십시오. 그런 다음 저장된 문자열을 나중에 읽습니다.

코드에 따라 문자열을 user field variables 또는 데이터 파일과 같은 영구 저장소에 저장하거나 대화 상자 창에서 인수로 반환 할 수도 있습니다. 예를 들면 다음과 같습니다.

optionsDialog.doExecute() 
results = optionsDialog.getResults() 
+0

예 알아요.하지만 어떻게 만들 수 있습니까? 몇 가지 방법을 시도했지만 작동하지 않습니다. OptionsPage가 열리지 않을 때 플러그인이 Textfields를 가져올 수없는 것처럼 보입니다. – FreeKill