i-appliでちょっとしたアプリを作成する事になりただいま勉強中です。
初歩的な質問です。

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

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>まず、Panelにおいて、ラベルテキストの表示場所を設定するといったことはできるのでしょうか?



座標で指定することはできないです。HTMLLayoutのようなレイアウトマネージャを使って配置するしかないです。
LayoutManagerをimplementsして独自のレイアウトマネージャを作ればイケるかもしれませんが。。。

>例を出すとCanvasにリストボックスは表示できないといったことでしょうか?

出来ないです。
Canvasは基本的にプログラムで絵を描いていくイメージです。
fillRectとかDrawLineとかを駆使して、リストボックスっぽいものを描画する処理を自前で作るしかないです。(EZアプリなら出来るんですけどね・・・)

>Panelにgif画像を左端に表示してその同列上にテキストを表示し、下部にリストボックスを表示しようとしています。

細かい座標の調整は出来ないですが、PanelとHTMLLayoutで、ある程度実現可能ではないですかね。
もし座標の微調整が必要であれば、透過gifなんかを配置して、調整も出来ると思います。

Canvasでリストボックスっぽいものを表示する処理を自作しても良いですが。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q--iアプリ-- ListBoxの項目をPanelクラスでTicker型に流し込み表示させたい

ニュースを配信するiアプリで、

・あるクラスでニュースの項目をListBoxに入れます。

ListBoxは以下のように定義してあります。
private ListBox itemList = new ListBox(ListBox.NUMBERED_LIST, 9);

そのListBoxをPanelクラスのほうに送ります。
送ったPanelクラスのほうではニュースの項目を確認することはできます。

ここで問題ですが、
Panelに送ったListBoxですが、一つ一つの値(項目)をTicker型(流れるように表示したい)にして表示させたいのです。

Panelクラス---

panel.add(ListBox); //ListBoxの項目が表示される
tick = new Ticker();
??


TickにはString型の文字を入れないといけないのはわかるのですが、ListBoxの項目をPanelのほうで取得できないのです。

どうすれば取得できるのでしょうか?
教えてください、お願いします。

ニュースを配信するiアプリで、

・あるクラスでニュースの項目をListBoxに入れます。

ListBoxは以下のように定義してあります。
private ListBox itemList = new ListBox(ListBox.NUMBERED_LIST, 9);

そのListBoxをPanelクラスのほうに送ります。
送ったPanelクラスのほうではニュースの項目を確認することはできます。

ここで問題ですが、
Panelに送ったListBoxですが、一つ一つの値(項目)をTicker型(流れるように表示したい)にして表示させたいのです。

Panelクラス---

panel.add(ListBox)...続きを読む

Aベストアンサー

> ListBoxの項目をPanelのほうで取得できないのです。
ListBox#getItem(int)メソッドを使います。

もしコンパイルエラーになるとかいう話なら、
まずアクセス制御について勉強しましょう。

Qリストボックスと連動したテキストボックスについて

お世話になります。よろしくお願いいたします。
セレクトボックスを変更すると、頭のテキストボックスの値が変更するようなホームページを作りたいと思っています。(下:画面例)
--------------------------------------
カテゴリーA
[OK] 商品A1 配送方法:[ 飛行機 5日 ▼]
[NO] 商品A2 配送方法:[ 船   20日 ▼] 
[NO] 商品A3 配送方法:[ トラック9日 ▼]
カテゴリーB
[NO] 商品B1 配送方法:[ 船   20日 ▼]
[NO] 商品B2 配送方法:[ トラック9日 ▼] 
[OK] 商品B3 配送方法:[ 飛行機 5日 ▼]
--------------------------------------

データが1つだけの場合には、
onChageを使って、
<html><head>
<title>テスト</title>
<script language="JavaScript">
<!--
function hantei(){
var idx = document.f1.p1.selectedIndex;
var c1 = eval(document.f1.p1.options[idx].value);
if ( c1>10 ) {
document.f1.r1.value = "NO";
} else {
document.f1.r1.value = "OK";
}
}
// -->
</script>
</head><body>
<form name="f1">
<hr>
判定:
<input size="10" type="text" name="r1"><br>
<hr>
選択:
<select name="p1" onChange="hantei();">
<option value="5" selected>飛行機</option>
<option value="20">船</option>
<option value="9">トラック</option>
</select>
</form>
</body>
</html>

のように実現するところまではなんとか理解できたのですが、
ループさせて、上記のp1,r1,f1を各データ毎にp1,p2,p3...r1,r2,r3...f1,f2,f3...というように変化させた場合に
引数をhantei()に渡して、変数として処理する必要があると思うのですが、
どうにもうまくいきません。

お詳しい方がいらっしゃいましたら、教えていただけないでしょうか?
よろしくお願いいたします。

お世話になります。よろしくお願いいたします。
セレクトボックスを変更すると、頭のテキストボックスの値が変更するようなホームページを作りたいと思っています。(下:画面例)
--------------------------------------
カテゴリーA
[OK] 商品A1 配送方法:[ 飛行機 5日 ▼]
[NO] 商品A2 配送方法:[ 船   20日 ▼] 
[NO] 商品A3 配送方法:[ トラック9日 ▼]
カテゴリーB
[NO] 商品B1 配送方法:[ 船   20日 ▼]
[NO] 商品B2 配送方法:[ トラック9日 ▼] 
[OK] ...続きを読む

Aベストアンサー

質問の内容がイマイチよくわかりませんが、今は1個だけどセレクトを複数にした場合の処理の分け方をお聞きなのでしょうか?

であれば話は簡単で、hantei();のところに引数を入れてhanteiの中で引数を評価して処理分けするか、hantei2()のようにそれぞれ必要な数だけ別の関数を用意して、それぞれ別個に評価するかのいずれかで出来ると思いますが・・。

私の解釈が間違ってたらごめんなさい。

Qiアプリ CanvasとPanelの切り替え

こんにちは、iアプリ作成のことで質問させてください。

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

ヒントだけでも結構です、よろしくお願い致します。

Aベストアンサー

Display.setCurrent()
で切り替えることでOKだと思います。
(この場合、Canvas,Panelの画面ごと
にクラスを分けたほうがよいと思います)

Qコンボボックスに連動するテキストボックスの表示数変更

入力フォームを作成しており、コンボボックスの数に応じて、
テキストボックスの表示数を変更させたいと考えています。

コンボボックスでの選択が「2」になれば、その下に表示される
テキストボックスの数も2つ表示させたいと思います。


<html>
<head>
</head>
<body>
<form>
項目数:
<SELECT>
<OPTION selected>1</OPTION>
<OPTION>2</OPTION>
<OPTION>3</OPTION>
<OPTION>4</OPTION>
<OPTION>5</OPTION>
</SELECT>
<br>
<br>
項目1:<input type="text" name="test1" size="20">
</form>
</body>
</html>


処理方法をサイトなどで調べましたが、該当するものが見あたりませんでしたので、ご教授お願いいたします。

Aベストアンサー

この手のヤツは、最初から最大数分の要素をつくっておき、
当初は使えなくしておくというのが、よろしいのでは?
もちろんムダも多いですが、消したりつけたりするときには
確実に処理ができます。

<html>
<head>
<script>
function changeFunc(obj,dClass,iClass){
var f=obj.form;
var v=Number(obj.value);
var cnt=1;
for(var i=0;i<f.length;i++){
if(f[i].className==iClass){
if(v>=cnt++) f[i].disabled=false;
else f[i].disabled=true;
}
}
var cnt=1;
var divs=document.getElementsByTagName('div');
for(var i=0;i<divs.length;i++){
if(divs[i].className==dClass){
if(v>=cnt++) divs[i].style.display="block";
else divs[i].style.display="none";
}
}
}
</script>
</head>
<body>
<form>
項目数:
<SELECT onChange="changeFunc(this,'viewClass','inputClass')">
<OPTION value="1" selected>1</OPTION>
<OPTION value="2">2</OPTION>
<OPTION value="3">3</OPTION>
<OPTION value="4">4</OPTION>
<OPTION value="5">5</OPTION>
</SELECT>
<br>
<br>
<div class="viewClass">項目1:<input type="text" name="test1" class="inputClass" size="20"></div>
<div class="viewClass">項目2:<input type="text" name="test2" class="inputClass" size="20" disabled></div>
<div class="viewClass">項目3:<input type="text" name="test3" class="inputClass" size="20" disabled></div>
<div class="viewClass">項目4:<input type="text" name="test4" class="inputClass" size="20" disabled></div>
<div class="viewClass">項目5:<input type="text" name="test5" class="inputClass" size="20" disabled></div>
</form>
</body>
</html>

単純にするなら、divのstyleのdisplayだけつけたり消したりでも
いいでしょう。
サブミットするときムダなデータが飛ばなくするにはdisabledを
つける必要があります。

この手のヤツは、最初から最大数分の要素をつくっておき、
当初は使えなくしておくというのが、よろしいのでは?
もちろんムダも多いですが、消したりつけたりするときには
確実に処理ができます。

<html>
<head>
<script>
function changeFunc(obj,dClass,iClass){
var f=obj.form;
var v=Number(obj.value);
var cnt=1;
for(var i=0;i<f.length;i++){
if(f[i].className==iClass){
if(v>=cnt++) f[i].disabled=false;
else f[i].disabled=true;
}
}
var cnt=1;
var div...続きを読む

Qコンボボックス選択時に関連する情報をテキストボックスに表示させたい。

現在、以下のようなものをJavaScriptで実現しようとしているのですが、方法がわからないので質問させていただきます。

DBに商品テーブルがあって、カラムが「商品コード」「商品名称」「金額」だとします。
画面にはコンボボックスと右横にテキストボックスがあって、
コンボボックスには商品名称のみ表示、金額はテキストボックスに表示します。
(商品コードは<option>のvalueに設定します)
サーバにアクセスせずにコンボボックスの内容を選択するたびに、対応する金額が表示されるようにしたいです。

PHPでコンボボックスを作成するときにvalueに商品コードと金額を区切り記号("_"など)で連結した値を設定しておき、
それを商品コードと金額に分解すれば実現できると思うのですが、もう少しスマートな方法があればと思い、質問させて頂きました。

環境はWindowsXP、PHP5、MYSQLです。
よろしくお願いします。

Aベストアンサー

>PHPでコンボボックスを作成するときにvalueに商品コードと金額を区切り記号
>("_"など)で連結した値を設定しておき、

単純にvalueに商品コードをいれておき、金額用のリストを用意しておけばよいのでは?

<script>
var kingaku={x001:300,y002:200,z003:100};
function setKingaku(obj){
var f=obj.form;
if(obj.value==""){f.kingaku.value="";return false;}
f.kingaku.value=kingaku[obj.value];
}
</script>
<form>
<select onchange="setKingaku(this)">
<option value="">選択</option>
<option value="x001">りんご</option>
<option value="y002">みかん</option>
<option value="z003">ばなな</option>
</select>
<input type="text" name="kingaku" value="">
</form>

>PHPでコンボボックスを作成するときにvalueに商品コードと金額を区切り記号
>("_"など)で連結した値を設定しておき、

単純にvalueに商品コードをいれておき、金額用のリストを用意しておけばよいのでは?

<script>
var kingaku={x001:300,y002:200,z003:100};
function setKingaku(obj){
var f=obj.form;
if(obj.value==""){f.kingaku.value="";return false;}
f.kingaku.value=kingaku[obj.value];
}
</script>
<form>
<select onchange="setKingaku(this)">
<option value="">選択</opt...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報