こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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);の部分でエラーが出て、読み込んでくれません…(;△;)何がおかしいのでしょうか?それから、今後はリストボックスにコンポーネントリスナーも付けようと思っています。

投稿日時 - 2008-09-26 13:31:48

QNo.4357863

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>エラーが出て、読み込んでくれません

これは、どういうエラーなのか。エラーが発生した場合は、ただ「エラーが出た」ではなくて、表示されたエラーメッセージも掲載してほしい。ちなみに、Display.setCurrentで表示のCanvasやPanelを切り替えるのは普通の操作であって、これでCanvasからPanelに切り替えること自体は問題ない。だから、どこかで引っかかっているのだろう。

ちょっと気になったのだが、もしやCanvasのコンストラクタ内でsetCurrentして表示を切り替えたりしてないだろうか。Display.setCurrentによる切り替えは、コンストラクタが終了し、idle状態に戻ってからでないとうまくいかないのではないか。たとえば、IApplication側でMainCanvasとMainPanelのインスタンスをフィールドとして保管し、これを必要に応じてsetCurrentする、というような仕組みにするのが一般的な気がする。

投稿日時 - 2008-09-26 14:25:20

補足

回答していただき、ありがとうございます!

エラーはMainCanvas.javaのMainPanel pl =new MainPanel();とMainPage.javaのMainCanvas canvas=new MainCanvas();の部分に出ていて、どちらもメッセージが「シンボルを解決できません。」です。これらの文の書き方や書く位置がちがうのでしょうか?

投稿日時 - 2008-09-26 16:08:04

あなたにオススメの質問