• 締切済み

アプリケーション作成で画面遷移の方法

java言語にて初めてプログラム開発に取り組んでます。 アプレット以外のアプリケーションにて作成中ですが、Frameクラス Panelクラスの使用方法がいまいち理解できません。 やりたいことは メイン(親)フレームから(子)フレームに画面遷移して スレッド実行しているクラスのsystem.out.printlのメッセージを (子)フレームに出力したいのです。 (実行ログを子フレームに表示させたいのです。) ちなみに表示エリアはTextAreaを使用しています。 このような要件の満たしたサンプルソース、がありましたら ご回答と共にお願いしたいのですが? みなさんよろしくお願いいたします。  

noname#35475
noname#35475
  • Java
  • 回答数1
  • ありがとう数9

みんなの回答

noname#25358
noname#25358
回答No.1

 一番簡単なのは、コンストラクタの引数として子フレームにメッセージを渡してしまうことです。  それから、親フレームと子フレームをマルチスレッドにし、途中にブリッジ関数を挟むという手もあります。マルチスレッドなら親と子は同時に走りますから、子フレームは、「親フレームからのメッセージが来たか」を定期的にチェックすればいいわけです。  それから、逆に子フレームから取りに行く手だてとしては、System.outで出力したメッセージはすでにストリームの外に流れていってしまっていますから、グローバル変数か何かにメッセージを保存しておき、それを取りに行くような構造にしておけばいいと思います。  まあ、テクニック次第でやりようはいくらでもあるんでしょうけど、今ぱっと思いつく限りで有用と思われるのはこのへんです。  で、サンプルではありませんが、Frameクラス類の勉強するのに適当と思われるHPを下記に掲載しますので、行ってみてください。

参考URL:
http://www.geocities.co.jp/SiliconValley-SanJose/1332/
noname#35475
質問者

補足

早速のご回答ありがとうございます。 結構、難しそうですね、DOS窓以外にLOGの表示機能があればいいのに・・・・。 重ねての質問で恐縮ですが、アプレット上からだとセキュリテイ上の制約がいろいろあるみたいですけれど 署名を取得すれば解除されるのでしょうか? アプレットをアプリケーションで使用できれば画面の構築がもっとスムーズできるのに。 情報がありましたら教えてください!

関連するQ&A

  • 画面遷移について

    早速質問なんですが、今 1.ホーム画面は地図(google Map)を表示、また画面遷移用のボタンを設置してある。 2.ボタンを押すとカメラを使う画面に遷移し、そこでとりあえず写真を撮る。(ここではカメラを実行するActivityと、SurfaceView を継承したクラスを別クラスにて実装しております。) 3.取った後に勝手に画面遷移させ(元のMap画面へ)、撮った写真の緯度、経度を取得したうえで現在地情報を表示させる。→表示させる際はFacebookなどにある、ピンをMap上に表示させるような感じで、さらにその場所の住所、画像も表示させる、といったイメージです。 このような仕様のアプリを作っております。簡単に言えば、写真を撮ったら現在地の情報がわかる!といったアプリです。 ここで、カメラ画面から元のMap画面に画面遷移させたいのですが、通常Activity間の画面遷移はIntentを使用するのが一般的ですが、この場合だとどのように実装すれば可能でしょうか? 自分としてはHandlerクラスのメンバをSurfaceView を継承したクラスで用意して、Activityに対してそのクラスを呼び出すコードを実装すれば行けるのかなぁ…と考えているのですが。 初対面でいきなりの質問で誠に申し訳ございませんが、ご回答お待ちしております。 必要であればプログラムコードもお送りいたします。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • java アプリケーションをjava アプレットに

    java超初学者です。詳しいかたご教授願います。 java アプリケーションをjava アプレットに書き換えたいのですが、具体的にはどう書き換えを行ったらいいのか修正をお願いします。 (文字制限があるので、14個あるクラスファイルの中で(内1つはhtmlファイル)、メインメソッドを持つ実行クラスだけのせています。) Appletを継承させる、属性をメインクラスとコンストラクタはpublic にする、 mainメソッドを削除し、initメソッドへ書き換える、サイズ指定は<applet>タグで指定する。等調べましたが 具体的にわかりません。特にコンストラクタとメインメソッドの部分のアプレットへの書き換えがわかりませんでした。 宜しくお願い致します。 //実行クラスです。 import java.awt.*; import java.awt.event.*; /** *ゲームクラス(ここから始まる)<p> *画面の作成 */ public class Game extends Frame { /** * メインクラス */ public static void main(String args[]) { //フレームの作成 new Game(); } /** * 引数なしのコンストラクタ */ Game() { //*** ウィンドウの初期化 //タイトル super("Shooting Game"); //クローズボタンによる終了処理の実装 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); setSize(500, 500); //ウィンドウのサイズ //*** キャンバスの初期化 MyCanvas mc = new MyCanvas(); add(mc); //フレームにキャンバスを追加 setVisible(true); //ウィンドウの表示 //ゲームデータの初期化 mc.init(); //スレッドを作成 mc.initThread(); } }

  • フレームのあるWeb画面から、フレームのないWeb画面への遷移方法

    最初にお断りしておきますが、以下の質問は少し前にVBのカテゴリーで質問させて頂いたのですが、回答が得られなかったのと、後でよく考えたらASPの質問かな、と思ったのでASP側で質問させて頂く次第です。 VB.Net2003でWebシステムを開発している者です。画面遷移で困っており、詳しい方がおられたら教えて頂けないでしょうか。 開発中のシステムでは、まずログイン画面(フレームなし)を表示し、ログイン認証がOKとなった場合、業務画面(左右に分割したフレーム画面。左側はメニューで、右側はメイン画面)に遷移するようにしています。 ここまではなんとか実装できたのですが、「ログイン認証を行わず、ブラウザから業務画面(フレームあり)のURLを直接指定した場合、エラー画面(フレームなし)を表示したい」と考えています。 そのため、次のような実装を行いました。 (1)ログイン認証でOKとなった場合、業務画面に遷移する直前にセッション変数にセッションID(Session.SessionID)を設定する。 (2)業務画面(右側のメイン画面)のPage_Loadメソッドにて「(1)で登録したセッションID」と「Page_Loadメソッド実行時のセッションID(Session.SessionID)が異なっていれば、エラー画面に遷移(Response.Redirect(エラー画面))を行う。 上記実装後に、ログイン認証を行わずに業務画面(フレームあり)のURLを直接指定すると、フレームの右側のみがエラー画面となり、左側は表示されてしまいます。 フレームのある画面のロード時にチェックを行って、エラーとなった場合に、フレームのない画面を表示させるには、どのように実装すればよいのでしょうか? 以上よろしくお願いします。

  • javaアプリケーションをHTML上から実行する

    JAVAアプレットの場合は、HTML上で実行するときに 目的のクラスファイルを<applet>タグで囲んで実行しますが、 これがJavaアプリケーションの場合、HTML上から Javaアプリケーションを実行することは可能なのでしょうか? また可能な場合は、どのようにしてJavaアプリケーションを 実行すればよろしいのでしょうか?

    • ベストアンサー
    • Java
  • Eclipseを用いたJARファイル作成について

    Eclipseを用いてjavaのプログラムをしているのですが アプレットのプログラム"のみ"がJARファイルにエクスポートできずに困っております。 [プロジェクト]を右クリック→[エクスポート]→[JARファイル]に設定するところまでは良いのですが 「JARマニフェスト仕様」というページの、「アプリケーションのエントリー・ポイントのクラスを指定」という項目で、メインクラスを参照しても アプレットのプログラムのクラス"のみ"が表示されていないのでエクスポートできません。コンソールのプログラムのクラスは表示されているので おそらく、アプレットにはmainメソッドを用いていないので表示されないのだと思うのですが・・・。 mainメソッドがないプログラムの場合はどうすれば良いのでしょうか・・・? 自分なりに、↓など調べてみたのですがどこがいけないのかわかりません。 http://mailsrv.nara-edu.ac.jp/~asait/java/applet/applet.htm http://sunjava.seesaa.net/article/57546363.html どこをどうすればこの場合、EclipseでJARファイルが作成できるのか、詳しく教えていただければ助かります。 一応、アプレットは↓の簡単なプログラムを試してみました。実行は出来ます。 import java.applet.Applet; import java.awt.Graphics; public class Sample extends Applet { public void paint(Graphics g) { g.drawString("こんにちは",10,10); } }

  • JAVAアプレットからJavaScriptへデータを渡すには?

    こんにちは。 JAVAアプレットはパラメータタグでhtmlからテキストデータを受け取ることができますが、 反対にJAVAアプレットからhtml(たとえばフォームのテキストエリアなど)に、テキストデータを渡すことはできますでしょうか? サンプルがあるとたすかるのですが。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • objective-c 画面遷移について

    今、iPhoneアプリを開発しています。簡単なカードゲームですが、 画面遷移について困っています。 サブクラス内のタッチイベントに、 [super presentModalViewController:viewController animated:YES]; と記述し、画面を切り替えたいのですが、 「'UIView' may not respond to 'presentModalViewController : animated:'」と 注意メッセージが表示され、 また、実行すると「Thread 1: received signal: "SIGABRT"」 となり、落ちてしまいます。 何分、初心者なもので、どこからどう手をつけたら良いのか分かりません。 色々調べたのですが、中々該当する答えが見つかりませんでした。 どなたか、お分かりになる方教えて頂けないでしょうか。 宜しくお願いします。

  • Webサイトのアプレットを実行したい

     今晩は、Java初心者です、宜しくお願いします。  Win 7です。  アプレットが表示されるWebサイトに行くと、アプレットが表示されず「JAVA PLUGーINがJRE衝突 を検出しました。」と表示され、アプレットが実行できません。  どのようにしたら、アプレットの画面が表示され、アプレットを実行できるようになるのでしょうか。  Programフォルダを見ると、「JRE6、JRE7、JRE1.5.0_06、jdk1.7.0_21」がインスト-ルされて いました。  宜しくお願いします。

    • ベストアンサー
    • Java
  • 実行中にNoClassDefFoundErrorが発生する

    初めて質問させていただきます。 Javaの実行中にNoClassDefFoundErrorが極稀に発生して困っています。 エラーは以下になります。 Exception in thread "Thread-12" java.lang.NoClassDefFoundError: パッケージ.Sample at パッケージ.問題発生クラス.run(問題発生クラス.java:71) 1.問題発生クラス.java:71でパッケージ.SampleをNewしています。 2.エラー内容からNewする時にNoClassDefFoundErrorが発生しているようです。   ただし、NoClassDefFoundErrorは数万回に一回でるかでないか。 ネットでも調べましたがコンパイル字のNoClassDefFoundErrorしか見つかりませんでした。 知恵をお貸しいただけないでしょうか よろしくお願いいたします。

  • スレッドでの画面表示中に、マウス処理が重くなる

    画面クラス(class mytailf extends JFrame)と、ファイル読み込みクラス(class LogFilter extends Thread)があります。どちらも自作のクラスです。 ログファイルを読み込んで、画面に表示しているのですが、画面でのマウス操作が非常に重くなる場合があります。 質問1 画面クラス.ログ表示命令はどちらのスレッドで実行されるのでしょうか?ソースでは以下の部分です。 //ログを表示します。 myScreen.displayLog(strLine); 質問2 なにか改善策がありますでしょうか? なお、動作概要は以下のとおりです。 1.画面クラスを新規作成 2.画面クラスで、ファイル読み込みクラスを作成(引数は画面クラス)、Start()を実行 3.ファイル読み込みクラスで、ファイルから一行読み込み、画面クラス.ログ表示命令(引数は読み込んだ行)を呼び出す //-------------以下ソースの抜粋--------- // //画面制御系 // public class mytailf extends JFrame {   //ログの読み込みクラス   LogFilter  myLogFilter =  new   LogFilter( this );   //条件に応じて、ログを振り分けます   void  displayLog(String  strLine){     //ログを表示しているMDI子供窓に、ログを表示する処理   }   //   public static void main(String[] args) {     new mytailf("MyTail_F").setVisible(true);   } } // //ファイル読み込み系 // public class LogFilter  extends Thread{   //ログ読み込み処理本体   public   void  run(){     while  (ファイル読み込み中)  {       try {         //* ファイルから一行読み込みます。         //* ファイルから行が読み込めている間、以下の処理を繰り返します。         while (ファイルから行が読み込めている間) {           //ログを表示します。           myScreen.displayLog(strLine);           //~他のスレッドに実行権を渡そう~//           Thread.yield();           mySleepMs(100);           lineCnt++;           if(lineCnt >= 30){              mySleep(intWaitSec);             lineCnt =  0;           }         }       } catch (IOException e) {         showStatus("ファイルの読み込みに失敗しました。");         System.out.println(e);         return;       }       mySleep(intWaitSec);         }   }   //コンストラクタ   public   LogFilter(mytailf argScreen){     super();          myScreen  =  argScreen;        }   //ログファイルを開く   public void  openLogFile(String strFileName){     //略   }      //指定秒数待機   private void  mySleep(int argSleepSec){     mySleepMs(argSleepSec  *  1000); // X秒間停止   }   //ミリ秒待機   private void  mySleepMs(int  argSleepSec){     try {       Thread.sleep(argSleepSec); // Xミリ秒間停止     } catch (InterruptedException e) {       System.out.println(e);     }   } }

専門家に質問してみよう