Zwei Fragen:
- Haltete ihr das für eine gute Idee (ich habe da so meine Zweifel)?
- Gibt es vielleicht sowas schon als Bibliothek?
Funktionieren tut das schon (die process-Methode ist nur so hässlich, das ich sie nicht posten will)...
Die nächsten logischen Schritte wären:
- Alle Top-Level-Container (JFrame, JDialog, JInternalFrame...) abzuleiten, damit sie process schon im Konstruktor aufrufen
- verschachtelte Container rekursiv nach Annotations abzusuchen
- andere Listener zu unterstützen
Edit: Natürlich kommt man auch an private-Felder ran, wenn die Policy es nicht verbietet, siehe z.B. Javax Den: Hack any Java class using Reflection
- Haltete ihr das für eine gute Idee (ich habe da so meine Zweifel)?
- Gibt es vielleicht sowas schon als Bibliothek?
Java:
@Target({FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CallAction {
String value();
}
...
JFrame frame = new JFrame("Test") {
@CallAction("buttonPressed")
public JButton button = new JButton("Press me!");
{
setSize(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(button);
}
public void buttonPressed() {
System.out.println("Press harder, I can take it!");
}
};
process(frame); //<------- Installiert die annotierten ActionListener per Reflection
frame.setVisible(true);
...
Funktionieren tut das schon (die process-Methode ist nur so hässlich, das ich sie nicht posten will)...
Die nächsten logischen Schritte wären:
- Alle Top-Level-Container (JFrame, JDialog, JInternalFrame...) abzuleiten, damit sie process schon im Konstruktor aufrufen
- verschachtelte Container rekursiv nach Annotations abzusuchen
- andere Listener zu unterstützen
Edit: Natürlich kommt man auch an private-Felder ran, wenn die Policy es nicht verbietet, siehe z.B. Javax Den: Hack any Java class using Reflection
Zuletzt bearbeitet: