代码之家  ›  专栏  ›  技术社区  ›  geowa4

如何使用AspectJ更改JoptionPane中的按钮

  •  2
  • geowa4  · 技术社区  · 14 年前

    我需要改变应用程序中每个jbutton的行为(这是一个研究项目)。我们觉得最好的方法是使用一个方面来更改所有的按钮,因为这样可以保持它的整洁——我们不必将所有262个实例都更改为一个新的类型。我们遇到了障碍。我们编写的方面不会像对项目中的其他每个按钮那样修改joptionpane中的按钮。以下是我的建议:

    after() returning(JButton button): call(*.new(..)) || call(* newInstance(..)) {
        init(button);
    }
    

    这与jbutton的其他所有构造函数都匹配,但似乎缺少joptionpane使用的构造函数。如何访问他们的创建?我在AOP还是新手,所以也许这根本不可能。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Ash    14 年前

    我认为Aspectj忽略了 javax 默认打包。因为选项窗格按钮是在look and feel代码中创建的(请参见 BasicOptionPaneUI.ButtonFactory javax.swing.plaf.basic 例如package),这可能就是它被忽略的原因。也许可以考虑更改配置选项以允许/包括javax包?