亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何使用自定義注解實現為事件源綁定事件監聽器操作

發布時間:2021-09-27 14:28:39 來源:億速云 閱讀:75 作者:小新 欄目:編程語言

這篇文章主要介紹了Java如何使用自定義注解實現為事件源綁定事件監聽器操作,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體如下:

一 定義注解

import java.lang.annotation.*;import java.awt.event.*;@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface ActionListenerFor{  // 定義一個成員變量,用于設置元數據  // 該listener成員變量用于保存監聽器實現類  Class<? extends ActionListener> listener();}

二 注解處理程序

import java.lang.reflect.*;import java.awt.event.*;import javax.swing.*;public class ActionListenerInstaller{  // 處理Annotation的方法,其中obj是包含Annotation的對象  public static void processAnnotations(Object obj)  {   try   {     // 獲取obj對象的類     Class cl = obj.getClass();     // 獲取指定obj對象的所有成員變量,并遍歷每個成員變量     for (Field f : cl.getDeclaredFields())     {      // 將該成員變量設置成可自由訪問。      f.setAccessible(true);      // 獲取該成員變量上ActionListenerFor類型的Annotation      ActionListenerFor a = f.getAnnotation(ActionListenerFor.class);      // 獲取成員變量f的值      Object fObj = f.get(obj);      // 如果f是AbstractButton的實例,且a不為null      if (a != null && fObj != null         && fObj instanceof AbstractButton)      {        // 獲取a注解里的listner元數據(它是一個監聽器類)        Class<? extends ActionListener> listenerClazz = a.listener();        // 使用反射來創建listner類的對象        ActionListener al = listenerClazz.newInstance();        AbstractButton ab = (AbstractButton)fObj;        // 為ab按鈕添加事件監聽器        ab.addActionListener(al);      }     }   }   catch (Exception e)   {     e.printStackTrace();   }  }}

三 測試注解程序

import java.awt.event.*;import javax.swing.*;public class AnnotationTest{  private JFrame mainWin = new JFrame("使用注解綁定事件監聽器");  // 使用Annotation為ok按鈕綁定事件監聽器  @ActionListenerFor(listener=OkListener.class)  private JButton ok = new JButton("確定");  // 使用Annotation為cancel按鈕綁定事件監聽器  @ActionListenerFor(listener=CancelListener.class)  private JButton cancel = new JButton("取消");  public void init()  {   // 初始化界面的方法   JPanel jp = new JPanel();   jp.add(ok);   jp.add(cancel);   mainWin.add(jp);   ActionListenerInstaller.processAnnotations(this);   // ①   mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   mainWin.pack();   mainWin.setVisible(true);  }  public static void main(String[] args)  {   new AnnotationTest().init();  }}// 定義ok按鈕的事件監聽器實現類class OkListener implements ActionListener{  public void actionPerformed(ActionEvent evt)  {   JOptionPane.showMessageDialog(null , "單擊了確認按鈕");  }}// 定義cancel按鈕的事件監聽器實現類class CancelListener implements ActionListener{  public void actionPerformed(ActionEvent evt)  {   JOptionPane.showMessageDialog(null , "單擊了取消按鈕");  }}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java如何使用自定義注解實現為事件源綁定事件監聽器操作”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰州市| 卢湾区| 团风县| 榆树市| 安西县| 长垣县| 林芝县| 阿克陶县| 西乌| 雷波县| 德庆县| 时尚| 诸城市| 汨罗市| 天津市| 桐庐县| 九龙坡区| 漠河县| 临颍县| 双辽市| 新乡市| 淳安县| 和田市| 文化| 呼伦贝尔市| 巨鹿县| 温州市| 扬中市| 永胜县| 邵阳市| 松滋市| 绥芬河市| 钦州市| 宁化县| 开封市| 章丘市| 濉溪县| 罗城| 酒泉市| 临海市| 友谊县|