Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用AspectJ更改JOptionPane中的按钮_Java_Aop_Aspectj - Fatal编程技术网

Java 如何使用AspectJ更改JOptionPane中的按钮

Java 如何使用AspectJ更改JOptionPane中的按钮,java,aop,aspectj,Java,Aop,Aspectj,我需要更改应用程序中每个JButton的行为(这是一个研究项目)。我们认为使用一个方面来更改所有按钮的最好方法是保持它的整洁——我们不必将所有262个实例都更改为新类型。我们遇到了困难。我们编写的方面不会像对项目中的其他按钮那样修改JOptionPane中的按钮。以下是我的建议: after() returning(JButton button): call(*.new(..)) || call(* newInstance(..)) { init(button); } 这与JButto

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

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

这与JButton的所有其他构造函数都匹配,但似乎缺少JOptionPane使用的构造函数。我如何访问他们的创作?我还是AOP新手,所以这可能根本不可能做到。

我认为AspectJ默认情况下会忽略
javax
包。由于选项窗格按钮是在外观代码中创建的(例如,请参见
javax.swing.plaf.basic
包中的
BasicOptionPaneUI.ButtonFactory
),这可能就是它被忽略的原因。也许可以考虑更改配置选项以允许/包括javax包?

这一解释肯定是有道理的。明天我进去的时候,我必须想办法让它融入到
javax
包中。谢谢你的提示!