• 締切済み

PanelとCanvasの違いについて

i-appliでちょっとしたアプリを作成する事になりただいま勉強中です。 初歩的な質問です。 高APIのPanelクラスと低APIのCanvasクラスの違いについて質問です。 まず、Panelにおいて、ラベルテキストの表示場所を設定するといったことはできるのでしょうか? PanelとCanvasは一緒には使用できないという事をネット上でみかけたのですが、 例を出すとCanvasにリストボックスは表示できないといったことでしょうか? Panelにgif画像を左端に表示してその同列上にテキストを表示し、下部にリストボックスを表示しようとしています。Canvasではこのような表示はできないと思いますが、かといってPanelだとCanvasのようにテキスト位置などを座標で指定するといった事が現状の知識では無理だと思うのですが、実際のところこのような場合、 どのように作成していけばいいのでしょうか?わかりにくいかもしれませんがよろしくお願い致します。

  • Java
  • 回答数1
  • ありがとう数3

みんなの回答

回答No.1

>まず、Panelにおいて、ラベルテキストの表示場所を設定するといったことはできるのでしょうか? 座標で指定することはできないです。HTMLLayoutのようなレイアウトマネージャを使って配置するしかないです。 LayoutManagerをimplementsして独自のレイアウトマネージャを作ればイケるかもしれませんが。。。 >例を出すとCanvasにリストボックスは表示できないといったことでしょうか? 出来ないです。 Canvasは基本的にプログラムで絵を描いていくイメージです。 fillRectとかDrawLineとかを駆使して、リストボックスっぽいものを描画する処理を自前で作るしかないです。(EZアプリなら出来るんですけどね・・・) >Panelにgif画像を左端に表示してその同列上にテキストを表示し、下部にリストボックスを表示しようとしています。 細かい座標の調整は出来ないですが、PanelとHTMLLayoutで、ある程度実現可能ではないですかね。 もし座標の微調整が必要であれば、透過gifなんかを配置して、調整も出来ると思います。 Canvasでリストボックスっぽいものを表示する処理を自作しても良いですが。

関連するQ&A

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

  • iアプリ CanvasとPanelの切り替え

    こんにちは、iアプリ作成のことで質問させてください。 CanvasとPanelを切り替える方法が分かりません。 今までCanvasだけ、Panelだけのアプリケーションは作成したことがあるのですが、今回VisualPresenterで動画再生するときだけPanelで表示させ、それ以外の時はCanvasで表示させたいと考えています。どのような方法で切り替えればいいのでしょうか。またそのようなことは可能なのでしょうか。 ヒントだけでも結構です、よろしくお願い致します。

    • ベストアンサー
    • Java
  • HTML5 canvasで文字幅に合わせて拡大

    ・HTML5 canvasで以下のようなことをやりたいのですが、可能でしょうか? ・もし可能ならどうやるのでしょうか? ■前提 ・canvas設定。width10px ・canvas2Dオブジェクト取得 ・文字「hogehoge」表示 ■やりたいこと ・この時、テキスト内容の文字幅に応じて、表示幅を広げ、全てを表示させるためにはどうすれば良いでしょうか? ■分からないこと ・テキスト内容を全て表示させるためには、canvas2Dオブジェクトのwidthを変更するのでしょうか? ・それとも、canvasのwidth自体を変更するのでしょうか? ・canvasのwidthより、canvas2Dオブジェクトのwidthが大きかったらどうなるのでしょうか?

  • Androidアプリ EditText表示

    main.xmlにGUIで作成したEditTextを、Canvasクラスを通じて表示させる方法はあるのでしょうか? Canvasクラス内にfindViewByIdで読み出してくるよう記述しましたが、実行しても反映されず困っております。 protected void onDraw(Canvas canvas) { (ここに記述) } ちなみに、テキストの描写は問題無く反映できます。 canvas.drawText(text, 4, 0, paint); よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 描画キャンバスについて

    描画キャンバスについて質問します。地図を作ったりするのに使いますが、丸や三角、四角の図形を挿入すると、中央に大きく挿入されてしまいます。また直線を挿入して幅を広げて色を変えようとするとキャンバスの枠線が変わってしまいます。テキストボックスもキャンバスからはみ出したりする事もあります。故障でしょうか?大変困っています。いろいろと教えてください。 ※OKWAVEより補足:「Lenovo:その他(デジタルライフ)」についての質問です。

  • iアプリでポップアップメニュー画面作成

    DOJA5.0でポップアップメニューのような画面を 作成することは可能でしょうか? ちなみにPanelやCanvasクラスのAPIを見たのですが、 サイズを変更したりポップアップのように表示するメソッドは ありませんでしたし、Dialogクラスは文字列しか 設定できませんでした。 ただ、他のiアプリを見るとポップアップで表示された 画面からアプリの設定を変更するようなことができていましたので、 何か方法があるのかと思い質問しました。

    • ベストアンサー
    • Java
  • テキストボックスに表を挿入する

    ワードで、テキストボックスを作成、その中に表を挿入すると、表の左端の縦罫線がテキストボックスの左端の縦線と重なり、表示されません。表を右に動かすと表示されますが、作成した時点できちんと表ができるにはどうしたらよいのでしょうか。

  • FLEX SDK+MXMLで外部HTMLの読み込み、同一ページで表示

    こんにちは。 FLEX SDK(3.0)+MXMLで、 外部HTMLを読み込み、同一 ページ内(特定のPanel,Canvas) に表示 することは、可能でしょうか。 navigateToURLという関数はありますが、 これは、次ページの読み替え、や、 新たなページ、インナーフレームを 開くのでやりたいこととは、異なります。 特定のPanelやCanvasに 読みたいと思っています。 これはAJAXでは、当然できていたこと (mypanel.load(url)などで できました) なので、FLEXでもできるのでは、 と思ったのですが、情報が ありません。 昔のFLASHのようにテキストデータを 読み込んで表示するとかしか、 方法がないのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Android。ボタン表示してクリックで処理したい

    Androidの開発をしてて、 ボタン(画像でボタンを作成するか、Buttonクラスとかのボタンでも可)を押すと 処理を行いたい制御を組み込もうとしてます。 あるサンプルのソースを見てると Canvasというのを利用して画面を表示して、 onTouchEventというのでタッチされたイベントをひろい、 どこがタッチされたかというのを計算により求めてます。 この方法だと押された場所を計算しないといけない(?)為、別の方法も考えてます。 ・Canvasでオブジェクトを追加して、そのオブジェクトが押されたらって処理する事は可能でしょうか? ・Canvasで画面を作成し、同一画面でButtonクラス等でボタンを作り、Buttonクラスの押下イベント処理を取得する事は可能でしょうか? ・ボタン画像を作成した場合、そのボタンの表示と押下イベント取得は一般的にどういう方法が適切なのでしょうか? 初心者ですみません。 画像ボタンとButtonクラスのボタン、どういうイベント取得が適切なのか考えてます。 ちなみに、画面のほかの部分ではCanvasというのを利用し作ってます。 どこか一部でも解答頂けると助かります。よろしくお願いします。

  • 重複エラーを解決するには

    こんにちは。 次のようなエラーが出て困っています。 ”パッケージ名.Canvasクラスの定義が重複しています。  すでにCanvas.javaと○.javaで定義されています。” そこで、 1,現在コンパイルしているファイルで、Canvas.java   と○.javaでの定義が重複しているのかを確認しました。   しかし、その二つのファイルが、現在コンパイルしているファイル自身でした。 2,Canvas.javaと○.javaのプログラムの中身を見ました。   しかし、Canvasクラスを定義していたのは片方だけでした。 3,このエラーが出るようになる前に行った作業(一度、Canvas.javaを削除して   再び作成し直した)ことが原因で、どこかにbackupfileが作成されてしまった。 →解決できず JBuilderを使っています。どうしたら解決できるのか、教えて下さい。お願いします。

    • ベストアンサー
    • Java