2012-12-12 19 views
0

我需要一些幫助,夥計們: 的事情是,我想要的ListView>組件顯示的ToString(或類似的東西)類底層數據模型的(ObservableList>測試= FXCollections.observableList(列表))JavaFX2 observableList <T>數據模型呈現字符串

所以在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>"; 
} 
} 

那麼我:

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); 
    }  
    } 

最後,當我運行一個應用程序時,在ListView中,我看到類似「class package.subpackage.KinderNonStandard」的東西,而不是該類的toString中的重寫。 那麼,我不太喜歡使用地圖和使用鍵作爲字符串和值作爲底層數據模型類。 所以我可以以某種方式管理它來顯示overriden toString方法?

感謝您的幫助!

回答

0

你的toString()KinderNonStandard不是Class<? extends SeleneseTestCase>,而你的清單包含Class<? extends SeleneseTestCase>。要強制調用toString()方法,首先需要實例化相應類的對象。例如:

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

是的,它應該立即按順序調用toString();我沒有意識到它......:/ – greengold