2010-06-07 9 views
1

Je souhaite accéder à un membre de classe JavaFX statique à partir de Java à l'aide de l'API de réflexion Javafx.Comment accéder à un membre de classe statique JavaFX 1.3 à partir de Java?

E.g. Code JavaFX:

public var thing; 

class MyJavaFXClass { 
} 

code Java:

private Object getThing() { 
    FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass"); 

    // Get static member 'thing' from 'MyJavaFXClass' 
    // <Insert Code Here> 

    return thing; 
} 

Quel code Java dois-je accéder à 'MyJavaFXClass.thing'?

Note: J'utilise JavaFX 1.3 - Je ne suis pas sûr que l'API de réflexion soit différente ici des versions antérieures de JavaFX.

Répondre

1
FXClassType classType = FXContext.getInstance().findClass("mypackage.MyJavaFXClass"); 
FXVarMember var = classType.getVariable("thing"); 
FXValue value = var.getValue(null); 
System.out.println(value.getValueString()); 

ou si vous voulez l'objet, pas la chaîne.

FXLocal.Value value = (FXLocal.Value)var.getValue(null); 
Object obj = value.asObject(); 
System.out.println(obj); 
+0

Merci Jim, c'est parfait. Offtopic: en passant, je tiens à vous remercier d'avoir compris comment intégrer des scènes JavaFX 1.3 dans une application Swing - m'a sauvé une quantité excessive de maux de tête !! – James

0

Votre "MyJavaFXClass" doit implémenter une interface IF. L'interface IF doit définir au moins une méthode qui renvoie le type de votre "var thing". Votre "MyJavaFXClass" doit alors implémenter l'interface en utilisant "class MyJavaFXClass extends IF".

Pour accéder à votre "chose" à partir du code Java, lancez d'abord l'objet sur IF, puis appelez la méthode.