2

アプリケーション内のすべての JButton の動作を変更する必要があります (これは研究プロジェクトです)。262 個のインスタンスすべてを新しいタイプに変更する必要がないため、アスペクトを使用してすべてのボタンを変更するのが最善の方法であると考えました。問題が発生しました。作成したアスペクトは、プロジェクト内の他のすべてのボタンのように JOptionPane 内のボタンを変更しません。これが私が持っているアドバイスです:

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

これは、JButton の他のすべてのコンストラクターと一致しますが、JOptionPane で使用されるコンストラクターが欠落しているようです。彼らの作品にアクセスするにはどうすればよいですか? 私はまだ AOP に慣れていないので、これを行うことさえできないかもしれません。

4

1 に答える 1

1

javaxAspectJ はデフォルトでパッケージを無視すると思います。オプション ペインのボタンはルック アンド フィール コードで作成されるため (たとえばBasicOptionPaneUI.ButtonFactory、パッケージ内を参照)、それが無視されている可能性があります。javax.swing.plaf.basicjavaxパッケージを許可/含めるように構成オプションを変更することを検討してください。

于 2010-07-26T22:23:50.130 に答える