• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アプレットでボタンを押したときの処理について質問です。)

アプレットでボタンを押したときの処理について質問

このQ&Aのポイント
  • JAVAで2つのクラスを作成し、ボタンを押された時の処理について質問します。
  • 1つは初期画面で「入力」「検索」等と言ったボタンを持ち、ボタンを押されると別の画面に切り替えるクラスです。もう1つは初期画面で「入力ボタン」を押されて表示する画面のクラスです。
  • 初期画面でボタンが押されたときの処理を次のようにしました。しかし、Inputクラスの画面が表示されません。どのように改良すればよいでしょうか?

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

  • ベストアンサー
noname#49664
noname#49664
回答No.1

・・ひょっとして、アプレットのクラスを2つ用意して、現在ブラウザに表示されているアプレットを別のアプレットに入れ替える、というようなことを考えていますか? それは無理です。  アプレットは、アプリケーションなどとは違い、あくまで「ブラウザ側からの要求によって組み込まれ表示されるもの」です。そのアプレットを表示するということはブラウザが管理し行うことなわけですね。  単に「アプレットの表示を変更したい」ということであるならば、「入れ物のアプレット」「表示するパネル1」「パネル2」・・というように、アプレットそのもののクラスと、実際の表示を行うクラスを切り分けて考えてはどうでしょう。 ・アプレットは、レイアウトマネージャを変更し(CardLayoutとか)、initの処理でパネル1とパネル2のインスタンスを作成して組み込み、最初に表示する方が表示されるようにしておく。 ・表示の変更などは、アプレットにメソッドとして用意しておく。 ・ボタンをクリックしたら、アプレットにある表示切り替え用メソッドを呼び出し、それで表示を切り替える。 複数のPanelを切り替え表示するにはCardLayoutが便利ですので調べてみると良いでしょう。また、それぞれのパネルから、自分が組み込まれているアプレットがわかるような仕組みを考えておく必要があるでしょう(例えば、クラス内にアプレットのインスタンスを保管するフィールドを用意しておき、アプレットでインスタンスを作成したときにそれを設定しておくなど)。

morumomo
質問者

補足

kyon2_PaPaさんが言うとおり現在ブラウザに表示されているアプレットを別のアプレットに入れ替えることを考えていました。 CardLayoutを使う方法は大変参考になりました。ありがとうございます。 もう1つ質問なのですが、別のアプレットを同じウィンドウではなく別のウィンドウで開くことは可能なのですか?

その他の回答 (1)

noname#49664
noname#49664
回答No.2

>別のアプレットを同じウィンドウではなく別のウィンドウで開くことは可能なのですか? これはつまり、アプレットを表示するためのHTMLを開く、と考えて良いですか?(アプレット単体では表示できないので)。<applet>を記述したHTMLがどこかにアップしてあって、それをブラウザで表示する、ということだと・・アプレットが表示されているブラウザに、指定したURLを表示するよう要求すればできそうですね。 // java.netをimport try { URL url = new URL( 開くページのURL ); this.getAppletContext().showDocument(url, "_blank"); } catch(MalformedURLException ex){ ex.printStackTrace(); } こんな感じでしょうか。this(アプレット)のgetAppletContext().showDocument()を呼び出し、表示させたいURLを渡します。新規ウィンドウなら"_blank"指定をします。これでできそうに思います。 実際に試したわけではないので、もしうまくいかなかったらごめんなさい。

morumomo
質問者

お礼

CardLayoutを使用した方法ははKyon2_PaPaさんのおかげで成功しました。 さっそくURLを指定する方法の方も試してみます! ありがとうございました。