忍者ブログ
アニメ、ゲーム、PC関連のLightな最新情報

『白銀のソレイユ-Successor of Wyrd《運命の継承者》-』 を応援しています!

 ブログ内検索                                            | Admin | Write | Comment | 
リンク
 リトルバスターズ!
 「リトルバスターズ!」2007年7月27日発売予定!
 あべにゅうぷろじぇくと
 あべにゅうぷろじぇくと
 絶対★妹至上主義!!
 「絶対★妹至上主義!!」2007年1月26日発売予定!
 真説・雪月夜話
 『真説・雪月夜話』応援バナー
 見上げた空におちていく
 『見上げた空におちていく』応援中です
 ひとゆめ
 スターリンク「ひとゆめ」 3月30日発売!
 白銀のソレイユ~Valkyr in Love~
 『白銀のソレイユ~ Valkyr in Love ~』を応援しています!
 禽ノ哭ク刻-トリノナクコロ-
 
 この青空に約束を―
 戯画 『この青空に約束を―』 おうえんバナー企画参加中♪
 Sentinel -センチネル-
 『Sentinel -センチネル-』2006年12月22日(金)発売!
 プリミティブリンク
 【プリミティブリンク】応援バナー
 くじびきアンバランス
 
 PS2版Fate
 Fate/stay night [Realta Nua] 応援バナー
 けよりな
 PlayStation2専用ソフト『夜明け前より瑠璃色な-Brighter than dawning blue-』は好評発売中です。
 涼宮ハルヒの憂鬱
 
 灼眼のシャナ
 
 いぬかみっ!
 
最新記事
プロフィール
HN:
灼眼の暁
HP:
性別:
男性
職業:
大学生
趣味:
アニメ、ゲーム、スロット、読書
最新コメント
(10/01)
(10/01)
(09/04)
(09/02)
(08/01)
カレンダー
06 2025/07 08
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
最新トラックバック
バーコード
ぷかレイ



さぼている
小梅ヲチ
カウンター
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

いままで家では携帯用(DOCOMO)のJAVAしかやっていなかったわけだが・・・ 大学のプログラミングの課題が終わりそうもないので、 家でも大学みたいにコマンドプロント使ってコンパイル→実行できるようにしようと思った。

JDKはすでにダウンロードしてインストールしてあったので、あとは設定だけ。たしかPATHの設定するんだったかな・・・ と思ったら、教科書のはじめにやり方が載っていた。ラッキーv

(XPの場合)コントロールパネル>システム>環境変数で「〜〜のユーザーの環境変数(U)に変数名PATHを追加。 変数値にJDKのbinディレクトリを指定。普通なら「C:\jdk1.3.1_17\bin」こんなかんじ?バージョン古いけど・・・。

これで完了。早速作ったプログラムをjavacでコンパイルしてみる。・・・ちゃんとできた。そして実行!!

  実  行  !  !

あれ?mainメッソドがないとかエラーでてきやがる。おれの記述ミスかと思ったが、全然間違ってない。

ネットで調べてみた。

 

環境変数に[Classpath]という変数があったら、それを編集し、 [変数値]の最後に 「;.(セミコロンとドット)」を追加する。(中略) 「java Sample」 と実行しようとしてもエラーが出て実行できない なんて時は、この Classpath が原因だったりする。

 

間違えなくこいつが原因だった。「;.」を入れたらきちんと直りましたどさ。めでたしめでたし。

教科書つかえねええええええええ!!!!

PR

Canvasに文字を表示させるとき、改行するのってとっても不便。改行する場合はY座標を変えないといけないし・・・。

そこで役立つのが可変長配列の機能を持ったVectorクラス。これを使うと簡単に改行できちゃった!

今回は

String itex="ここから・改行されます・ほらね?・"

を「・」の部分で改行する。

  Vector myVector=new Vector();
   int v1=-1,v2=0;
   v1=itex.indexOf('・');
   while(v1!=-1){
      myVector.addElement(itex.substring(v2,v1));
      v2=v1+1;
      v1=itex.indexOf('・',v2);
   }
   for(v1=0;v1<= myVector.size()-1;v1++){
     g.drawString((String)myVector.elementAt(v1),30,30+18*v1);
   }

これを実行すると・・・

       ここから
       改行されます
       ほらね?

と表示されるはず。注意するところは、String itex で「・」をきちんと最後にも打つところかな。じゃないと、最後の「ほらね?」 の部分が表示されない。

この可変配列はとても便利だから、どんどん使っていこうと思う。

こんなに簡単だとは思いもしなかった・・・

imeOn("表示させえる文字",TextBox.DISPLAY_ANY,TextBox.KANA);

これだけでCanvasでIMEが起動できてしまった。
いままでPanelに切り替えてやろうとしていたのが馬鹿らしく思えた。


文字列を取得するのもすげえぇぇ簡単だった。

ユーザーの操作が終わると、
processIMEEventメソッドが呼ばれる。


public void processIMEEvent(int type,String text) {
//確定された時の処理
  if (w_type==Canvas.IME_COMMITTED) {
        str = text;
  }
//キャンセルされたときの処理
if (w_type==Canvas.IME_CANCELED) {
        str = null;
}
}


これだけで、IMEに入れた文字が、確定されたときに
  String strに文字がセットされる。(この場合、
取り消し(キャンセル)されたときはnullを代入。)



あまりの簡単さに唖然としてしまった・・・。

調べてみた結果
>>画面には、同時に1つのパネルしか表示できません。また、低レベルAPIを混在して使用することはでません。

>>ただし、複数の画面から構成されるアプリケーションが、 高レベルAPI(Panel)と低レベルAPI(Canvas)を切替えて表示することは可能です。


とのこと。表示することは可能!? たしかに、表示は出来たけど・・・。 Panle→Canvasに移ったときにイベント処理が出来なかった。

低レベルAPI(Canvas)では
processEventメソッドをオーバーライドしてイベント処理を行い、

高レベルAPI(Panel)では
イベントリスナーでイベント処理をやっていたわけだが・・・


今回は、componentAction(Component c, int type, int param)メソッドでPanelに貼り付けたボタンが押された場合、PanelからCanvasに切り替えるようにしていた。

が、どうやらココが問題だったみたい。

同じイベントリスナーでも、KeyListenerで数字キー(5キー)が押されたときにCanvasに移るようにしてみたら、 戻ったあともきちんとCanvasでイベント処理が出来た。


結論:
よくわからないけど、Panel上のボタンが押された時にCanvasに戻るようにすると、 Canvasに移った後のイベント処理ができないが、
keyPressed()メソッドで、任意の数字キーが押された時にCanvasに戻るようにすれば、 Canvasに戻った時にもきちんとイベント処理が行われるみたい。



まあ、今回やりたかったことはCanvasで文字入力をできるようにしたかったわけだが、どうやらDoJa-3.0プロファイルからは、 Canvasでも、このIMEによる文字列入力が可能になったっぽい。
なので、こっちのCanvas.imeOn()メソッドを使った方法をやってみようと思う。DoJa-3.0以前の携帯(504iとか) 使ってる人とかいないしね。

Canvasで文字入力させるだけなのに、、かなり遠回りした気がするな・・・

Canvasでテキストボックス使いたいけど無理っぽいので、しかたなく新しくクラス作ってPanelを継承することに・・・。

テキストボックスを使いたいときに

Display.setCurrent(Main.p1);

で切り替えることに。

ポイントはCanvas,Panelのどちらともメイン(IApplicationを継承したクラス)でstaticにしておいて、 直接アクセスできるようにしておくところ。

static TestCanvas c1;
static TextPanel p1;
public void start(){
c1=new TestCanvas();
p1=new TextPanel();
Display.setCurrent(c1);
c1.exe();
}

CanvasやPanelでオブジェクトを作成してしまうと、思わぬところでコンストラクタが処理されてしまうみたい。



これでうまくいく!!・・・と思ったら。。。


文字の入力が終わり、Panelからボタンを押してCanvasに戻ったときに、 Canvasでのキーイベントが動かなくなってしまっていた!!!!!!!!

public void processEvent(int type,int parm)

でキーイベントを取得しているわけだけど・・・これがまったく処理されなくなっていた。

考えた結果、Panelでの
public void componentAction(Component c, int type, int param)

が処理されているののではないか!という点。


しかし一日中悩んだが・・・未だに対処法がわからん


知ってる人いたら、マジでだれか教えてください。

≪ Back  │HOME│

[1] [2]

Copyright c めろんぱん。。All Rights Reserved.

忍者ブログ [PR]