DoJa5.0 キャンバスの中にパネルは埋め込めますか?
こんにちは!iアプリを製作している初心者です。
キャンバスとパネルを同時に使ったアプリを作りたいのですが、うまくいきません…。リストボックスのパネルをキャンバスに表示しようと思っています。
私が作ったソースコードの問題の部分を書いたので、どなたかご指導をお願いします(>△<)
(1)MainPage.java
import com.nttdocomo.ui.*;
public class MainPage extends IApplication {
//アプリの開始
public void start() {
MainCanvas canvas=new MainCanvas();
Display.setCurrent(canvas);
canvas.exe();
}
}
(2)MainCanvas.java
import com.nttdocomo.ui.*;
class MainCanvas extends Canvas {
Graphics g=getGraphics();
public MainCanvas() {
while(true) {
//画面の描画
g.lock();
~省略~
g.unlock(true);
}
MainPanel pl =new MainPanel();
Display.setCurrent(pl);
}
//描画
public void paint(Graphics g) {}
}
(3)MainPanel.java
import com.nttdocomo.ui.*;
class MainPanel extends Panel {
ListBox lb1,lb2,lb3,lb4; //リストボックス
public MainPanel() {
//リストボックス作成
lb1 = new ListBox(ListBox.SINGLE_SELECT);
lb1.append("選択1");
add(lb1);
~省略~
lb4 = new ListBox(ListBox.SINGLE_SELECT);
lb4.append("選択4");
add(lb4);
}
}
このように、(2)のMainCanvas.javaに(3)のMainPanel.javaをいったん埋め込んで、最終的に(1)のMainPage.javaでまとめて表示しようと思っています。ですが、(2)のMainCanvas.javaのMainPanel pl =new MainPanel();Display.setCurrent(pl);の部分でエラーが出て、読み込んでくれません…(;△;)何がおかしいのでしょうか?それから、今後はリストボックスにコンポーネントリスナーも付けようと思っています。
お礼
ありがとうございます! 今まではDisplay.setCurrent()はstart()メソッドの中に入れて使ったことしかありませんでしたので、キーイベントなどで使用することなど考えてもいませんでした。これで先に進むことができそうです。