javaでのiアプリの画面表示について

このQ&Aのポイント
  • javaでiアプリを作成したいのですが、行きずまっています。テキストボックスとストップウォッチを画面上に両方表示させたいのですが、下のDisplay.setCurrent(p);とDisplay.setCurrent(mainWin);のどちらかしか表示されません。どうすれば良いでしょうか?
  • ストップウォッチは、MainWin.javaが他にありますのでしっかり起動します。
  • javaのiアプリでテキストボックスとストップウォッチを画面に表示する方法について教えてください。
回答を見る
  • ベストアンサー

javaでのiアプリの画面表示について

javaでiアプリを作成したいのですが、行きずまっています。 テキストボックスとストップウォッチを画面上に両方表示させたいのですが、下のDisplay.setCurrent(p);とDisplay.setCurrent(mainWin);のどちらかしか表示されません。 ストップウォッチは、MainWin.javaが他にありますのでしっかり起動します。 どうすれば良いでしょうか? package stopwatch; import com.nttdocomo.ui.*; public class StopWatch extends IApplication implements ComponentListener { MainWindow mainWin; TextBox textbox1; TextBox textbox2; public void start() { Panel p = new Panel(); textbox1 = new TextBox("",16,2,TextBox.DISPLAY_ANY); p.add(textbox1); textbox2 = new TextBox("(未入力)",16,2, TextBox.DISPLAY_ANY); textbox2.setEditable(false); p.add(textbox2); p.setComponentListener(this); Display.setCurrent(p); mainWin = new MainWindow(); Display.setCurrent(mainWin); } public void componentAction(Component source , int type, int param) { if(type == ComponentListener.TEXT_CHANGED && source == textbox1) { textbox2.setText(textbox1.getText()); } } }

  • docomo
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 カテゴリにJavaというカテゴリがありますのでそちらのほうが回答付きやすいですよ。 MainWindowクラスがどのような構成だかわからないので的確なアドバイスになるかわかりませんが、 Display.setCurrent(panel); は画面上に表示するパネルをセットするので1つしか出来ません。 なのでどちらかしか表示できない状況になっています。 同時に表示したいのであれば一つのパネル上に配置する必要があると思います。

関連するQ&A

  • javaでのiアプリの画面表示について

    javaでiアプリを作成したいのですが、行きずまっています。 テキストボックスとストップウォッチを画面上に両方表示させたいのですが、下のDisplay.setCurrent(p);とDisplay.setCurrent(mainWin);のどちらかしか表示されません。 ストップウォッチは、MainWin.javaが他にありますのでしっかり起動します。 どうすれば良いでしょうか? package stopwatch; import com.nttdocomo.ui.*; public class StopWatch extends IApplication implements ComponentListener { MainWindow mainWin; TextBox textbox1; TextBox textbox2; public void start() { Panel p = new Panel(); textbox1 = new TextBox("",16,2,TextBox.DISPLAY_ANY); p.add(textbox1); textbox2 = new TextBox("(未入力)",16,2, TextBox.DISPLAY_ANY); textbox2.setEditable(false); p.add(textbox2); p.setComponentListener(this); Display.setCurrent(p); mainWin = new MainWindow(); Display.setCurrent(mainWin); } public void componentAction(Component source , int type, int param) { if(type == ComponentListener.TEXT_CHANGED && source == textbox1) { textbox2.setText(textbox1.getText()); } } }

  • iアプリ パネル遷移の際の変数の受け渡し方について

    iアプリで、パネル遷移の際に遷移元の変数を遷移先に引き渡したいのですが、その方法がわかりません。 テスト用のプログラムを作成しましたので、どなたかご教示いただければ幸いです。 ソフトキー1:終了 ソフトキー2:TextBoxのリセット ボタン:パネル遷移とTextBoxの入力文字の遷移先への引き渡し TextBox:受納したテキストの表示と送付用のテキストの入力 以上の機能をパネル'p1'と'p2'とに備え、二つのパネル間での遷移とテキストの受け渡しをしたいと思います。 ========== Test.java ========== public class testx extends IApplication { public void start() { P1 p1 = new P1(); P2 p2 = new P2(); Display.setCurrent(p1); } } ======== P1.java ======== public class P1 extends Panel implements ComponentListener, SoftKeyListener{ IApplication iapp; String str =""; Button btn1 = new Button("送る"); TextBox tb1=new TextBox("",33,1,TextBox.DISPLAY_ANY); P1(){ setTitle("P1"); HTMLLayout lm=new HTMLLayout(); setLayoutManager(lm); lm.begin(HTMLLayout.LEFT); add(tb1); add(btn1); lm.end(); setSoftKeyListener(this); setSoftLabel(SOFT_KEY_1,"終了"); setSoftLabel(SOFT_KEY_2,"リセット"); setComponentListener(this); Display.setCurrent(this); } public void componentAction(Component source,int type,int param){ if(type==BUTTON_PRESSED){ /* p2 からのテキストをstrと定義しTextBoxに表示したい。 その定義の仕方がわからない。 str = ; */ tb1.setText(str); /* TextBoxに新たに入力した文字列をstrと再定義。 変数strをp2に渡したい。 */ str = tb1.getText(); P2 p2 = new P2(); Display.setCurrent(p2); } } public void softKeyPressed(int softKey){ if(softKey==SOFT_KEY_1){ iapp.terminate(); } if(softKey==SOFT_KEY_2){ tb1.setText(""); } } public void softKeyReleased(int softKey){ } } ======== P2.java ======== public class P2 extends Panel implements ComponentListener, SoftKeyListener{ IApplication iapp; String str =""; Button btn1 = new Button("送る"); TextBox tb1=new TextBox("",33,1,TextBox.DISPLAY_ANY); P2(){ setTitle("P2"); HTMLLayout lm=new HTMLLayout(); setLayoutManager(lm); lm.begin(HTMLLayout.LEFT); add(tb1); add(btn1); lm.end(); setSoftKeyListener(this); setSoftLabel(SOFT_KEY_1,"終了"); setSoftLabel(SOFT_KEY_2,"リセット"); setComponentListener(this); Display.setCurrent(this); } public void componentAction(Component source,int type,int param){ if(type==BUTTON_PRESSED){ /* p1 からのテキストをstrと定義しTextBoxに表示したい。 その定義の仕方がわからない。 str = ; */ tb1.setText(str); /* TextBoxに新たに入力した文字列をstrと再定義。 変数strをp1に渡したい。 */ str = tb1.getText(); P1 p1 = new P1(); Display.setCurrent(p1); } } public void softKeyPressed(int softKey){ if(softKey==SOFT_KEY_1){ iapp.terminate(); } if(softKey==SOFT_KEY_2){ tb1.setText(""); } } public void softKeyReleased(int softKey){ } }

  • p.add(myPanel());にエラーが出ます

    試行錯誤の末、テキストボックスの下にタイマーを表示したいので、下のソースのように両方Panelで実装したのですが、p.add(myPanel());にエラーがでます。どう変更すればよいでしょうか? import com.nttdocomo.ui.*; import com.nttdocomo.util.*; public class textbox extends IApplication implements ComponentListener { TextBox textbox1; TextBox textbox2; public void start(){ Panel p = new Panel(); textbox1 = new TextBox("",16,2,TextBox.DISPLAY_ANY); p.add(textbox1); textbox2 = new TextBox("(未入力)",16,2, TextBox.DISPLAY_ANY); textbox2.setEditable(false); p.add(textbox2); p.setComponentListener(this); p.add(myPanel()); Display.setCurrent(p); } class myPanel extends Panel implements TimerListener{ public Timer myTimer; public int cnt = 0; public Label lb; public myPanel(){ //新しいラベルをつくり表示する lb = new Label("カウント開始"); add(lb); //タイマーを作成 myTimer = new Timer(); //タイマーイベントの時間間隔を設定 myTimer.setTime(1000); //タイマーイベントを繰り返し発生させるかどうか設定 myTimer.setRepeat(true); //タイマーリスナーを登録 myTimer.setListener(this); //タイマーの開始 myTimer.start(); } //タイマーイベントの処理 public void timerExpired(Timer iTimer) { cnt++; lb.setText("カウント["+cnt+"]"); } } public void componentAction(Component source , int type, int param) { if(type == ComponentListener.TEXT_CHANGED && source == textbox1) { textbox2.setText(textbox1.getText()); } } }

  • Java 他クラスの呼び出しが上手くいきません。

    Java初心者です。 過去Q&Aとして掲載されていた「iアプリでのクラスファイルが複数ある時の画面遷移」と同趣旨のことがしたく、記事を参考にプログラムを組んでみました。 しかし、コンパイルの際、画面遷移のための別クラスファイルを呼び出しインスタンス化するところで生じる「シンボルを見つけられません。」というエラーの原因がつかめず困っています。 作成したプログラムのどこがいけないのか、ご教示いただければ幸いです。 作成したプログラム ========= Test01.java ========= import com.nttdocomo.ui.*; public class Test01 extends IApplication implements ComponentListener{ Button btn1; Label lbl1; public void start() { Panel p1 = new Panel(); p1.setTitle("p1"); Label lbl1=new Label("p1に居ます。"); p1.add(lbl1); Button btn1=new Button("next"); p1.add(btn1); p1.setComponentListener(this); Display.setCurrent(p1); } public void componentAction(Component source, int type, int param) { if(type == ComponentListener.BUTTON_PRESSED) { if(source==btn1){ Test02 test02 =new Test02(); //ここでエラーが発生します。 Display.setCurrent(test02); lbl1.setText("p2に遷移"); } } } } ============ Test02.java ============ import com.nttdocomo.ui.*; public class Test02 extends IApplication implements ComponentListener{ Button btn1; Label lbl1; public void start() { Panel p2 = new Panel(); p2.setTitle("p2"); Label lbl1=new Label("p2に居ます。"); p2.add(lbl1); Button btn1=new Button("next"); p2.add(btn1); p2.setComponentListener(this); Display.setCurrent(p2); } public void componentAction(Component source, int type, int param) { if(type == ComponentListener.BUTTON_PRESSED) { if(source==btn1){ lbl1.setText("p1に遷移"); //コンパイルエラーは生じませんが、ラベル表示の切り替えができません。 } } } }

    • ベストアンサー
    • Java
  • iアプリでの関数の計算について

    関数(トランク関数とアークタンジェント)を計算したいのですが、以下のコードだと「シンボルを解釈処理できません」とメッセージが出てコンパイルできません。何か間違っているのでしょうか。 import com.nttdocomo.ui.*; public class test01 extends IApplication { private Panel p1; private Label label1,label2; public void start() { p1 = new Panel(); double num1,num2; num1 = Math.atan2(1.0,1.0); num2 = Math.trunc(1.0); label1=new Label("計算結果A "+ num1); label2=new Label("計算結果B "+ num2); p1.add(label1); p1.add(label2); Display.setCurrent(p1); } }

    • ベストアンサー
    • Java
  • iアプリ 複数パネル切替時の変数受渡(再度)

    すみませんが、再度質問です。 パネルを切替えると、変数が書換えられてません。 import com.nttdocomo.ui.*; public class TEST01 extends IApplication { MainCanvas mc; MainPanel mp; public void start() { mc = new MainCanvas(); mp = new MainPanel(); Display.setCurrent(mc); } } class MainCanvas extends Canvas{ TEST01 app; int data; public MainCanvas() { data=1; //----- data=1 Graphics g=getGraphics(); app = (TEST01)IApplication.getCurrentApp(); } public void paint(Graphics g) { data=2; // ここでdataを書換えてるのに・・・・ g.drawString("data="+data,100,100); g.drawString("セレクトキーで画面切替",50,200); } public void processEvent(int type, int param) { if (type == Display.KEY_PRESSED_EVENT) { if (param == Display.KEY_SOFT2) { IApplication.getCurrentApp().terminate(); } if (param == Display.KEY_SELECT) { Display.setCurrent(app.mp); } } } } class MainPanel extends Panel implements ComponentListener{ TEST01 app; Button b1; Label l1; public MainPanel() { app=(TEST01)IApplication.getCurrentApp(); l1=new Label("data="+app.mc.data); //書換えたdata=2にならないのはなぜ? b1=new Button("Push me"); add(l1); add(b1); setComponentListener(this); } public void componentAction(Component c,int type, int param){ if (c == b1 && type == BUTTON_PRESSED) Display.setCurrent(((TEST01)IApplication.getCurrentApp()).mc); } } data=1だったのをdata=2にしたのに、1のままです。

    • ベストアンサー
    • Java
  • iアプリで複数の画面(パネル)を使いたいのですが。

    以下のコードを実行するとボタンとラベルが一緒の画面に表示されますが、ボタンを押した時に新しい画面(パネル)でラベルを表示したいのです。どのようにすれば良いのでしょうか? import com.nttdocomo.ui.*; import com.nttdocomo.io.*; public class test01 extends IApplication { public void start() { mypanel w_panel = new mypanel(); w_panel.setSoftLabel(w_panel.SOFT_KEY_1,"終了"); Display.setCurrent(w_panel); } class mypanel extends Panel implements SoftKeyListener { private Label w_label; private Button w_button; public mypanel(){ w_button = new Button("ボタン"); add(w_button); w_label = new Label("ラベル"); add(w_label); setSoftKeyListener(this); } public void softKeyReleased(int param){ if(param == this.SOFT_KEY_1){ terminate(); } } public void softKeyPressed(int param){ } } }

    • ベストアンサー
    • Java
  • iアプリ Display#setCurrent使用での画面ちらつき

    こんにちは。 iアプリを作っています。 トップメニュー、サブメニューがあり、1Canvas画面で処理するのが しんどかったので機能毎のCanvasを継承したクラスを作りました。 そのクラスをIApplicationを継承したクラス内のメソッドで Display.setCurrent()を実行して画面を切り替えていますが 切り替え時に画面がちらつきます。 どうにかちらつくことの回避方法はありませんでしょうか。 簡略したソース public class AppliMain extends IApplication {  ACanvas aCanvas = null;  BCanvas bCanvas = null;  public void start () {   aCanvas = new ACanvas ( this );   bCanvas = new BCanvas ( this );   this.showACanvas ();  }  public void showACanvas () {   Display.setCurrent ( aCanvas );  }  public void showBCanvas () {   Display.setCurrent ( bCanvas );  } } public class ACanvas extends Canvas {  private AppliMain parent = null;  public ACanvas ( AppliMain _parent ) {   parent = _parent;  }  public void paint ( Graphics g ) {  }  public void processEvent ( int type, int param ) {   // BCanvasに表示切替   parent.showBCanvas();  } } public class BCanvas extends Canvas {  private AppliMain parent = null;  public BCanvas ( AppliMain _parent ) {   parent = _parent;  }  public void paint ( Graphics g ) {  }  public void processEvent ( int type, int param ) {   // ACanvasに表示切替   parent.showACanvas();  } }

    • ベストアンサー
    • Java
  • iアプリ Tomcatと連携

    前回の質問は、分かりづらいようなので新たに質問させていただきます。 現在、TomcatとiアプリDoja_Ver5.1、MySQLを使いDojaの方からTomcatへアクセスしTomcatからMySQLのデータを取りDojaの方へ表示させたいのですが、下記の文で何度やっても「java.lang.SecurityException: Illegal host」と出てしまいできません。 ADFファイルである、Jamファイルは、Jarファイルと同じ場所にあるので、PackageURLには「dosei_jisaku.jar」としか記述していません。 何故か、java.lang.SecurityException: Illegal hostが出て解決策も見出せずでいます;; public class dosei_jisaku extends IApplication { public void start() { mypanel wp_mypanel = new mypanel(); Display.setCurrent(wp_mypanel); } class mypanel extends Panel{ public mypanel() { add(new Label("項目名:")); TextBox w_name = new TextBox("",8,1,TextBox.DISPLAY_ANY); add(w_name); try { HttpConnection c = (HttpConnection)Connector.open("http://localhost:8080/mfs/mfs/test/dosei_jisakuSV"); ←同PCにあるTomcatのServlet(classファイル)へアクセスしています。 c.setRequestMethod(HttpConnection.GET); c.connect(); if(c.getResponseCode() != HttpConnection.HTTP_OK){ throw new IOException(); } InputStream is = c.openInputStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); for(;;){ int n = is.read(); if (n == -1) { break; } os.write(n); } String str = new String(); str = os.toString(); w_name.setText(str); os.close(); is.close(); c.close(); } catch(Throwable e) { w_name.setText("読込エラー" + e); } } } } どなたかアドバイスを頂けるようお願い致します…。

  • iアプリ TextBoxについて

    以下のように、安直に作ったTextBoxで後に変更されたdataを取出すには? TextBox s; ~~ for (i=0;i<20;i++){ s=new TextBox(data[i],20,1,TextBox.DISPLAY_ANY); add(s); } 下のような感じで取れないですか? for (i=0;i<20;i++) data[i]=s.XX.getText(); s.XXの所に適当なindexみたいなものをいれて。

    • ベストアンサー
    • Java