-1

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)

次の 2 つのコードを使用しました。

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);

参考: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という名前のプロジェクトを見つけました!!!!!!!

4

1 に答える 1

0
l.setTextEditorEnabled(false);

例外を停止します。(使用しているjarの.classファイルを閲覧してヒントを得た)

おそらく、これより悪い API は見たことがないでしょう。

TextArea の白い背景を削除するには、その onPaint をオーバーライドし、グラフィックを別の色で塗りつぶす必要がありました。

于 2013-03-12T18:20:18.843 に答える