2012-12-12 3 views
0

J'ai besoin d'aide, les gars: La chose est que je veux ListView> Composant pour montrer .toString (ou quelque chose de similaire) de la classe de dataModel sous-jacente (ObservableList> Tests = FXCollections.observableList (liste))JavaFX2 observableList <T> présentation dataModel Chaîne

donc en Java:

public class KinderNonStandard extends SeleneseTestCase { 

@Before 
public ... {} 

@Test 
public ... {} 

@After 
public ... {} 

@Override 
public String toString() { 
return "I want this string to be shown at presentation layer of listView<T>"; 
} 
} 

j'ai:

public class TestWindowController implements Initializable{ 

    @FXML private ListView<Class<? extends SeleneseTestCase>> availableTests; 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

//list contains classes like KinderNonStandard (extends SeleneseTestCase...) 
    ObservableList<Class<? extends SeleneseTestCase>> tests = Collections.observableList(list); 
availableTests.setItems(tests); 
    }  
    } 

Et enfin , quand je lance une application, dans ListView, je vois quelque chose comme "class package.subpackage.KinderNonStandard" au lieu de ce qui a été redéfini dans toString de cette classe. Eh bien, je ne suis pas très à l'aise avec l'utilisation de cartes et de travailler avec des clés comme des chaînes et des valeurs en tant que classes sous-jacentes de modèle de données. Donc, je peux en quelque sorte le gérer pour montrer cette méthode overString surchargée?

Merci pour votre aide!

Répondre

0

Votre toString() est à l'intérieur KinderNonStandard PAS Class<? extends SeleneseTestCase>, alors que votre liste contient Class<? extends SeleneseTestCase>. Pour forcer l'appel de la méthode toString(), vous devez d'abord instancier un objet de la classe correspondante. Ex:

for(Class<? extends SeleneseTestCase> testItem : tests) { 
    System.out.printlin(Class.forName(testItem.getName()).newInstance().toString()); 
} 
+0

oui, il doit être instancié dans l'ordre tro call toString(); Je ne m'en suis pas rendu compte ...: / – greengold

Questions connexes