JavaAppletのイベント処理についてお伺いしたい事があります。
Appletで作成した画面にボタンAを設置し、
actionPerformedのイベントを作成しました。
private void ボタンA_actionPerformed (java.awt.event.ActionEvent ae) {
//処理内容
}
ボタンAを押下すると上記のイベントが呼ばれ正常に動作するのですが、このイベント処理をボタンAを押下する以外の方法で呼び出す事は可能なのでしょうか?
下記内容は例として、ボタンBで[F1]が押されたらボタンAの押下処理を呼び出そうとしております。
private void ボタンB_keyPressed (java.awt.event.KeyEvent ke) {
java.awt.event.ActionEvent ae;
ae = ○○○○○○;
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_F1) {
ボタンA_actionPerformed(ae);
}
}
java.awt.event.ActionEventで定義した変数aeの中身の所でつまづいております。
ご存知の方おりましたらご指導願います。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
普通こういう場合は、一つ一つのメソッドの役割をきっちり決めて、処理を分けたほうがよいと思います。
たとえば、
private void ボタンA_actionPerformed (java.awt.event.ActionEvent ae) {
hogehoge();
}
private void hogehoge() {
//処理内容
}
private void ボタンB_keyPressed (java.awt.event.KeyEvent ke) {
if (e.getKeyCode() == java.awt.event.KeyEvent.VK_F1) {
hogehoge();
}
}
ボタンA_actionPerformedメソッドに処理を書いてしまうと、ボタンA_actionPerformedメソッドの役割があいまいになってしまい、他のKeyEventがおきたときに、ボタンA_actionPerformedメソッドを呼び出すという直感的でない形になってしまいます。
実際、本来必要のないActionEventをどう生成するか悩んでおられます。
ボタンA_actionPerformedメソッドは、ボタンAのクリックされたときに呼び出されるメソッド、
ボタンB_keyPressedは、ボタンBが押下されたときに呼び出されるメソッド、
hogehogeメソッドは、処理をするメソッド、
と、一つ一つのメソッドの役割を明確化したほうがわかりやすくなると思います。
No.2
- 回答日時:
ご使用のボタンがswingなのかawtなのか判りませんが、JButtonであると仮定して回答します。
javax.swing.AbstractButton#doClick()メソッドにてご希望の処理が実現出来るかと思います。
このメソッドを使用することで、ボタンが押下されたとみなされ、リスナーが呼び出されます。
以下、JavaDocの説明です。
プログラム上で「クリック」を実行します。ユーザがマウスのボタンを押し、すぐに離す操作 (マウスのクリック) を実行した場合と同じ処理を行います。
参考URL:http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ …
No.3
- 回答日時:
以下は、ActionEventを直接actionPerformedを呼び出して渡すのと、
dispatchEventを使って転送する場合の例です。
-----アプレット-----
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
class aebutton extends Button implements ActionListener {
TextArea TA;
public aebutton(String s, TextArea ta) { super(s);
TA = ta;
addActionListener(this);
};
public void actionPerformed(ActionEvent ae) {
TA.append("[" + getLabel() + "] Clicked\n");
};
}
public class actionev extends Applet implements KeyListener {
TextArea TA;
aebutton BN1, BN2;
public void init() {
setLayout(new BorderLayout());
TA = new TextArea();
TA.addKeyListener(this);
add(TA, BorderLayout.CENTER);
BN1 = new aebutton("Button1", TA);
BN1.addKeyListener(this);
add(BN1, BorderLayout.NORTH);
BN2 = new aebutton("Button2", TA);
BN2.addKeyListener(this);
add(BN2, BorderLayout.SOUTH);
};
public void keyPressed(KeyEvent ke) {
if (ke.getKeyCode() == KeyEvent.VK_F1) {
ActionEvent ae = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "BN1");
BN1.actionPerformed(ae);
};
if (ke.getKeyCode() == KeyEvent.VK_F2) {
ActionEvent ae = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "BN2");
BN2.dispatchEvent(ae);
};
};
public void keyReleased(KeyEvent ke) {};
public void keyTyped(KeyEvent ke) {};
}
-----ページ-----
<html>
<head><title>make action event</title></head>
<body><center>
<applet codebase="." code="actionev" width="320" height="240"></applet>
</center></body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- JavaScript jsで質問です。 ボタンが二つ存在し、両方のボタンがクリックされたことをチェックしたいのですが、どの 4 2022/11/22 10:30
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- 画像編集・動画編集・音楽編集 CyberLinkPowerDirectorでDVD作成時タイトル/チャプターのボタンが押せない 1 2023/04/09 12:30
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JScrollPane上のJTableの再描画
-
JButton配列でのイベント処理
-
VB.NETでフォーム上にExcelのよ...
-
ファイル保存先のダイアログが...
-
コンポーネントの削除について
-
VB.NETでMSComm が追加できず?
-
VisualBasicのコンポーネントで...
-
パネルのフォーカス移動
-
Delphiでカスタムコンポーネン...
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
レコード件数の表示
-
VB.NET getとsetの概念がわかり...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
C# インスタンスの破棄
-
変数名の付け方
マンスリーランキングこのカテゴリの人気マンスリー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)のサイズ変...
おすすめ情報