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);
}
}
です。ボタンを押された時のイベントを受け取るまでの処理は正しいと思うのですが、どのように改良すればよろしいでしょうか?
No.1ベストアンサー
- 回答日時:
・・ひょっとして、アプレットのクラスを2つ用意して、現在ブラウザに表示されているアプレットを別のアプレットに入れ替える、というようなことを考えていますか? それは無理です。
アプレットは、アプリケーションなどとは違い、あくまで「ブラウザ側からの要求によって組み込まれ表示されるもの」です。そのアプレットを表示するということはブラウザが管理し行うことなわけですね。
単に「アプレットの表示を変更したい」ということであるならば、「入れ物のアプレット」「表示するパネル1」「パネル2」・・というように、アプレットそのもののクラスと、実際の表示を行うクラスを切り分けて考えてはどうでしょう。
・アプレットは、レイアウトマネージャを変更し(CardLayoutとか)、initの処理でパネル1とパネル2のインスタンスを作成して組み込み、最初に表示する方が表示されるようにしておく。
・表示の変更などは、アプレットにメソッドとして用意しておく。
・ボタンをクリックしたら、アプレットにある表示切り替え用メソッドを呼び出し、それで表示を切り替える。
複数のPanelを切り替え表示するにはCardLayoutが便利ですので調べてみると良いでしょう。また、それぞれのパネルから、自分が組み込まれているアプレットがわかるような仕組みを考えておく必要があるでしょう(例えば、クラス内にアプレットのインスタンスを保管するフィールドを用意しておき、アプレットでインスタンスを作成したときにそれを設定しておくなど)。
この回答への補足
kyon2_PaPaさんが言うとおり現在ブラウザに表示されているアプレットを別のアプレットに入れ替えることを考えていました。
CardLayoutを使う方法は大変参考になりました。ありがとうございます。
もう1つ質問なのですが、別のアプレットを同じウィンドウではなく別のウィンドウで開くことは可能なのですか?
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"指定をします。これでできそうに思います。
実際に試したわけではないので、もしうまくいかなかったらごめんなさい。
CardLayoutを使用した方法ははKyon2_PaPaさんのおかげで成功しました。
さっそくURLを指定する方法の方も試してみます!
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Delphiでカスタムコンポーネン...
-
VBでCPUの使用率を取得できます...
-
パネル上にテーブルを再表示
-
パネルのフォーカス移動
-
ツールボックスのような折りたたみ
-
エクセルVBAで、条件に一致する...
-
3年間同じクラスになる確率
-
インスタンス参照でアクセスで...
-
c++,ある関数のクラスから別の...
-
ワイルドカード<?>と型パラメー...
-
「天声人語」をインターネット...
-
DataGridViewでセルクリックイ...
-
string formatについて
-
クラス間でのデータ参照
-
変数の参照でエラーが出てしま...
-
VBA 同じ名前のオブジェクトを...
-
String型の日付(2005/11/25)の...
-
生成したインスタンスを削除す...
-
コマンドプロンプト実行後に画...
-
BufferedWriterのcloseメソッド
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
ファイル保存先のダイアログが...
-
requestFocusについて
-
C#で設定時刻到来時にイベント...
-
Buttonの色
-
JScrollPane上のJTableの再描画
-
VB6のツールボックスへのコンポ...
-
VB.NETでMSComm が追加できず?
-
Visual Basic 2010を使ってRS-2...
-
JButton配列でのイベント処理
-
tableView reloadDataが出来ない
-
C++ Builder でVisibleとshow
-
画像を一瞬だけ表示する。
-
VBSでCDトレイのオープン/ク...
-
フレーム上のコンポーネントの...
-
[delphi] 変数を利用してコンポ...
-
ツールボックスのような折りたたみ
-
ダイアログでタイトルバーを非表示
-
文字の色の変更
-
ゲーム画面(JFrame)のサイズ変...
おすすめ情報