No.2ベストアンサー
- 回答日時:
JButtonは、親クラスのAbstractButtonからdoClickというメソッドを継承しているので、これを使えば何とかなるような気がします。
私は実際にこのメソッドを使ったことはありませんが、Swingなら多分これでいけるのでは?
またもう一つ方法がありまして、(最初の回答者も同じようなことをおっしゃっていますが)ボタンイベントとそれとは別の処理で共通している部分をメソッドとして独立させておき、それぞれの処理でそのメソッドを呼び出すということもできます。
ものすごく簡単でした!
が・・・1.4以上でないとだめなんですね・・・
実は今セミナーで学んでいて、
そこで使っているのが1.3なんですよ・・・
1.3で何とか実現したいのですが・・・
No.3
- 回答日時:
こんな感じでボタン作りますよね。
JButton jButton = new JButton("button");
jButton.addActionListener(new ButtonListener());
//////////
中略
//////////
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//何かのイベント
}
}
このときに生成したButtonはインナークラスButtonLister(ActionListerをimplements)をaddしておくことによって、ActionEventを受けることができますよね。
そして、他で発生したActionEventを拾って、
ActionEvent e = //発生したActionEvent;
jButton.actionPerformed(e);
としたらJButtonが持っているActionを発生できます。
この回答への補足
遅くなりました!
回答ありがとうございます。
ボタンを4つ用意して、
他のボタンを押したとき、
連動させたかったのですが、
たとえばbtn1とbtn2で、ご回答にあるように
btn1がButtonListenerだとすると
Actionevevt のeはその内部で定義されており・・・
外側から
ActionEvent e = //発生したActionEvent;
jButton.actionPerformed(e);
のようにするとシンボルが解決できません、のおなじみなエラーが出てしまいます。
さらに、btn2を押したあとにその処理後にbtn1を押す、と言うことをプログラムしたかったのですが、
btn2Listenerクラスの内部で、上記のように記述すると、
Actionevent eはすでに定義されています、と言うようなエラーが出てしまいました・・・
う~~ん
とうなってしまいました・・・・
No.1
- 回答日時:
java.awt.Button ならば
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(new ActionEvent(button,ActionEvent.ACTION_PERFORMED,"Click"));
でいけたんですが JButton では駄目みたい。。。
で、アクションイベントを起すという方法ではなくて、actionPerformed() 内の処理を別メソッドとして定義し、
public void actionPerformed(ActionEvent e){
foo();
}
private void foo(){
// 何がしかの処理
}
と、actionPerformed() から呼び出しをする形にします。
で、他の処理と連動した流れで直接 foo() を呼び出すのも良いのですが、それではスレッドセイフではないので
SwingUtilities.invokeLater(new Runnable(){
public void run(){
foo();
}
}
とすれば良いかと思います。
うーん、しかし Swing の場合のイベント起こしってどうやるんでしょうね??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) Iphone 13 pro maxが急に動かなくなった際の対処法 2 2023/08/15 02:08
- ノートパソコン Windows10のノートパソコンをさっきまで使っていて、指紋がついてたからぱっぱっとティッシュでキ 6 2022/07/13 01:52
- ノートパソコン dellのwindows10のノートパソコンについて 7 2023/02/19 22:44
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- iPhone(アイフォーン) iPhone13について。 母がiPhone13を最近買ったのですが、 今困ってるので教えてほしいで 5 2022/12/30 22:54
- その他(パソコン・スマホ・電化製品) 先日、OPTIPLEX790を使用しスリープ機能で電源が落ちた後に電源が付かなくなるトラブルが発生し 1 2022/12/20 01:53
- CPU・メモリ・マザーボード パソコン動作遅いです。スペックは、2014年に買った dell i54460 tg705 メモリー8 11 2023/04/06 10:05
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
- Windows 10 Windows10の再起動について 3 2022/09/21 21:30
- その他(趣味・アウトドア・車) Arudino nanoが正常に動作しない原因 1 2022/10/30 18:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
Labelコントロールに数字を代入...
-
mainメソッドのthrows節で設定...
-
boolean型のフィールドとゲッタ...
-
配列のメソッド
-
onClickで関数呼出し後に、結果...
-
【sendkeysメソッドが動かずに...
-
final修飾子を使っているのに、...
-
Range クラスのAutoFitプロパテ...
-
Application.Wait の参照設定
-
java 飾子を付けること(public...
-
描画した線や画像などを消す方法。
-
ACCESS2000でダイアログボック...
-
サーブレット DBにある生年月...
-
BasicDataSourceについて
-
javascriptからjavaを呼び出したい
-
1画面をテストすることを単体テ...
-
ここで言う「アロー演算子」の...
-
javaで最前面表示はできますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
コマンドプロンプト実行後に画...
-
mainメソッドのthrows節で設定...
-
DataGridViewでセルクリックイ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
ExcelのxlDialogInsertPictureで。
-
Refreshメソッドの使い方
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
ウィンドウを最前面にできません
-
(String args[])というメッソ...
-
C# 演算 最大値 最小値 表現の仕方
-
Excel VBA シェイプの原型のサ...
-
VB.netで、シリアル通信のタイ...
-
boolean型のフィールドとゲッタ...
おすすめ情報