2013-03-12 9 views
-1

lwuit 양식에서 Dialog 경고를 표시하려고 할 때 이상한 예외가 발생합니다.lwuit 양식에 다중 회선 메시지로 경고 표시

java.lang.NullPointerException 
    at com.sun.lwuit.TextArea.shouldShowHint(+21) 
    at com.sun.lwuit.TextArea.calcPreferredSize(+4) 
    at com.sun.lwuit.Component.preferredSize(+63) 
    at com.sun.lwuit.Component.getPreferredSize(+4) 
    at com.sun.lwuit.Component.getPreferredW(+4) 
    at com.sun.lwuit.layouts.FlowLayout.layoutContainer(+139) 
    at com.sun.lwuit.Container.doLayout(+8) 
    at com.sun.lwuit.Container.layoutContainer(+16) 
    at com.sun.lwuit.Container.doLayout(+40) 
    at com.sun.lwuit.Container.layoutContainer(+16) 
    at com.sun.lwuit.Container.doLayout(+40) 
    at com.sun.lwuit.Container.layoutContainer(+16) 
    at com.sun.lwuit.Container.revalidate(+18) 
    at com.sun.lwuit.Dialog.showPacked(+107) 
    at com.sun.lwuit.Dialog.showImpl(+76) 
    at com.sun.lwuit.Dialog.show(+5) 
    at com.sun.lwuit.Dialog.showDialog(+9) 
    at com.test.MainView.ShowAlert(+82) 
    at com.test.MainView.ShowGameOverAlert(+45) 
    at com.test.MainView.<init>(+209) 
    at com.test.Main.startApp(+29) 
    at javax.microedition.midlet.MIDletProxy.startApp(+7) 

나는 코드의 두 가지 다음과 같은 사용 :

Dialog validDialog = new Dialog("Alert"); 
validDialog.setScrollable(false); 
validDialog.setIsScrollVisible(false); 
validDialog.setTimeout(5000); // set timeout milliseconds 
TextArea textArea = new TextArea("...."); //pass the alert text here 
textArea.setFocusable(false); 
textArea.setIsScrollVisible(false); 
validDialog.addComponent(textArea); 
validDialog.show(0, 100, 10, 10, true); 

참고 : Alert pop up with LWUIT

Dialog d = new Dialog(title); 
TextArea l = new TextArea(1, 20); 
l.setText(message); 
l.setHint("no hint"); 
l.setSingleLineTextArea(false); 
l.setEditable(false); 
l.setGrowByContent(true); 

d.addComponent(l); 
d.setDialogType(Dialog.TYPE_INFO); 
d.setDialogPosition(BorderLayout.CENTER); 
d.showDialog(); 

사람이 lwuit의 소스 코드에 날 지점 수 있다면 가장 도움이 될 것입니다.
TextArea.java 내부에 'shouldShowHint'함수가 없으며 공식 사이트 https://lwuit-incubator.dev.java.net/이 열리지 않는 Google 코드에서 lwuitfixes라는 프로젝트를 발견했습니다 !!!!!!!

+0

LWUIT 인큐베이터는 공식 사이트가 아닙니다. Oracle은 dev라는 단어를 제거하기 위해 사이트를 이동했습니다. 그것의 lwuit.java.net. –

+0

@ShaiAlmog [lwuit.java.net] (lwuit.java.net)는 "How to Contribute?"라는 제목 아래에 링크가 위 링크를 보여줍니다. LWUIT의 소스를 다운로드하려면 링크를 공유하십시오. –

+0

LWUIT 프로젝트 페이지에는 SVN 링크가 있었지만 오라클 사람들은 프로젝트를 완전히 망가 뜨린 것 같습니다. 소스 코드에 액세스하는 것이 더 이상 작동하지 않는 것 같습니다. 전형적인. 유일한 소스는 이제 코드 네임 원입니다. –

답변

0
l.setTextEditorEnabled(false); 

예외를 중지합니다. (내가 사용하고있는 병의 .class 파일을 탐색하여 힌트를 얻었습니다.)

아마 이것보다 더 나쁜 API는 본 적이 없을 것입니다.

TextArea의 흰색 배경을 제거하려면 해당 onPaint를 재정의하고 그래픽을 다른 색으로 채워야했습니다.