
public class TestButton extends Applet implements ActionListener
{
Button bt1,bt2,bt3;
public void init()
{
bt1 = new Button("red");
add(bt1);
bt2 = new Button("blue");
add(bt2);
bt3 = new Button("yellow");
add(bt3);
bt1.addActionListener(this);
}
java初心者です。アプレットで上のようにボタンを作ります。それぞれが押された時に、red,blue,yellowが表示されるようにしたいのです。ActionListenerをインプリメントしているので、
public void actionPerformed(ActionEvent ae)
をオーバーライドする必要がありますが、そこで質問です。
ボタンを3種類別々に関連づけるには、actionPerformed内をどのように記述したらよいでしょうか?また、init内はこれだけでいいんでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
これは色々やり方があります。
ボタンをメンバ変数として定義してActionEventの
getSource()メソッドでEventが発生したObjectと
比較するとか、getSource()で取得したオブジェクト
をButtonにキャストしてからgetLabel()でラベルの
文字列を取得し任意の文字列と比較するとか。
他にはアクションコマンドで分岐する方法もあります。
・メンバ変数の例
public class TestButton extends Applet implements ActionListener {
Button btn1,btn2,bt3;
public void init(){
btn1=new Button("red");
add(btn1);
btn2=new Button("blue");
add(btn2);
btn3=new Button("yellow");
add(btn3);
}
public void actionPerformed(ActionEvent e){
Object obj=e.getSource();
if(obj == btn1){
// "red"の処理
}
else if(obj == btn2){
// "blue"の処理
}
else if(obj == btn3){
// "yellow"の処理
}
}
}
・ラベルで比較する例
public void acitonPerformed(ActionEvent e){
Object obj=e.getSource();
if(obj instanceof Button){
Button btn=(Button)obj;
String labStr=btn.getLabel();
if("red".equals(labStr)){
// "red"の処理
}
else if("blue".equals(labStr)){
// "blue"の処理
}
else if("yellow".equals(labStr)){
// "yellow"の処理
}
}
}
・アクションコマンドの例
public void actionPerformed(ActionEvent e){
String cmdName=e.getActionCommand();
if("red".equals(cmdName)){
// "red"の処理
}
else if("blue".equals(cmdName)){
// "blue"の処理
}
else if("yellow".equals(cmdName)){
// "yellow"の処理
}
}
制約が無ければアクションコマンドでの処理が私は好きです。
回答どうもありがとうございます。無事解決しました。JAVAのヘルプドキュメントを眺めながらどうしたらいいのかうんうん悩んでおりました。やはり経験した方に意見を聞くのが一番ですね。回答はWORD文書にして永久保存するつもりです。ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 xは位置 yは速さ tは時刻 (1) x=a sin(bt+c) (2) v=a sin(bt+c) 4 2023/06/14 02:09
- 据え置き型ゲーム機 PS4の音声をBluetoothイヤホンで聴きたい 1 2022/11/07 03:07
- テレビ 車用TVアンテナの配置について 1 2022/11/10 19:42
- Bluetooth・テザリング PRIME Z390-PでWIFI&Bluetooth 2 2022/04/01 19:25
- 数学 微分方程式の積分定数について 5 2023/07/13 08:39
- 不妊 不妊治療アプリについて 2 2023/03/05 09:50
- Bluetooth・テザリング Ubuntu22.04ltsです。 ブルートゥースのUSBアダプターを使っています。 パソコンはID 1 2023/08/06 12:30
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- iPhone(アイフォーン) apple music liveが無料で聞けてしまう 3 2023/02/22 14:50
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
イメージボタンを作成したいの...
-
キーリスナー
-
プログラミング(Java)じゃん...
-
コンボボックスを使う時の警告
-
大量のデータを読み込んで表示...
-
C# タスクバーを隠したフォーム...
-
C#で、定数をフラグ(if文)に...
-
javaアプレット repaintのタイ...
-
C# 矢印キーの取得
-
ボタンの複数割り当てについて
-
C# DataGridView列カスタマイズ
-
ピクチャボックスのクリックイ...
-
Java 他クラスの呼び出しが上手...
-
JSPやサーブレットでSystem.out...
-
ORA-01858: 数値を指定する箇所...
-
System.err. printlnとSystem.o...
-
InputStreamはreadが1回しかで...
-
数値⇒漢数字変換 java
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
C#で別のFormへ複数の値を返そ...
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
C# 矢印キーの取得
-
C# MouseHoverを何度も呼ぶには
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C#でキーイベントが発生しない...
-
C# DataGridView列カスタマイズ
-
C#から、C++で作成したdll内の...
-
画像ファイル操作方法
-
エンターキーを押すとOKボタン...
-
スレッド動かず
-
Java コレクション・ジェネリク...
-
なぜエラーになるのかがわかり...
-
マウスクリックで別のスレッド...
-
参照されない
おすすめ情報