プロが教える店舗&オフィスのセキュリティ対策術

JAVAで2つのクラスを作成しました。
1つは初期画面で「入力」「検索」等と言ったボタンを持ち、ボタンを押されると別の画面に切り替えるクラスです。もう1つは初期画面で「入力ボタン」を押されて表示する画面のクラスです。

初期画面でボタンが押されたときの処理を次のようにしました。
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("入力")){
Input input = new Input();
}
ですが、Inputクラスの画面が表示されません。
Inputクラスのソースは
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code="Input" width=250 height=250>
</applet>
*/
public class Input extends Applet
{
Panel panel;
TextArea textarea;

public void init()//部品を初期化する
{
panel = new Panel();
textarea = new TextArea();

setLayout(new BorderLayout());

add(textarea,BorderLayout.CENTER);
add(panel,BorderLayout.SOUTH);
}
}
です。ボタンを押された時のイベントを受け取るまでの処理は正しいと思うのですが、どのように改良すればよろしいでしょうか?

A 回答 (2件)

・・ひょっとして、アプレットのクラスを2つ用意して、現在ブラウザに表示されているアプレットを別のアプレットに入れ替える、というようなことを考えていますか? それは無理です。


 アプレットは、アプリケーションなどとは違い、あくまで「ブラウザ側からの要求によって組み込まれ表示されるもの」です。そのアプレットを表示するということはブラウザが管理し行うことなわけですね。
 単に「アプレットの表示を変更したい」ということであるならば、「入れ物のアプレット」「表示するパネル1」「パネル2」・・というように、アプレットそのもののクラスと、実際の表示を行うクラスを切り分けて考えてはどうでしょう。

・アプレットは、レイアウトマネージャを変更し(CardLayoutとか)、initの処理でパネル1とパネル2のインスタンスを作成して組み込み、最初に表示する方が表示されるようにしておく。
・表示の変更などは、アプレットにメソッドとして用意しておく。
・ボタンをクリックしたら、アプレットにある表示切り替え用メソッドを呼び出し、それで表示を切り替える。

複数のPanelを切り替え表示するにはCardLayoutが便利ですので調べてみると良いでしょう。また、それぞれのパネルから、自分が組み込まれているアプレットがわかるような仕組みを考えておく必要があるでしょう(例えば、クラス内にアプレットのインスタンスを保管するフィールドを用意しておき、アプレットでインスタンスを作成したときにそれを設定しておくなど)。

この回答への補足

kyon2_PaPaさんが言うとおり現在ブラウザに表示されているアプレットを別のアプレットに入れ替えることを考えていました。
CardLayoutを使う方法は大変参考になりました。ありがとうございます。

もう1つ質問なのですが、別のアプレットを同じウィンドウではなく別のウィンドウで開くことは可能なのですか?

補足日時:2005/06/19 10:57
    • good
    • 0

>別のアプレットを同じウィンドウではなく別のウィンドウで開くことは可能なのですか?



これはつまり、アプレットを表示するための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"指定をします。これでできそうに思います。

実際に試したわけではないので、もしうまくいかなかったらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/19 16:27

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