0

みんな、助けが必要です: ListView> コンポーネントに、基礎となる dataModel (ObservableList> tests = FXCollections.observableList(list)) のクラスの .toString (または同様のもの) を表示させたいということです。

だから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 に、そのクラスの toString でオーバーライドされたものではなく、「class package.subpackage.KinderNonStandard」のようなものが表示されます。まあ、私はマップを使用して、キーを文字列として、値を基になるデータモデル クラスとして操作することにあまり慣れていません。それで、オーバーライドされた toString メソッドを表示するためにどうにかして管理できますか?

手伝ってくれてありがとう!

4

1 に答える 1

0

リストにが含まれている間、あなたtoString()KinderNonStandardNOTの中にあります。メソッドを強制的に呼び出すには、最初にそれぞれのクラスのオブジェクトをインスタンス化する必要があります。元:Class<? extends SeleneseTestCase>Class<? extends SeleneseTestCase>toString()

for(Class<? extends SeleneseTestCase> testItem : tests) {
    System.out.printlin(Class.forName(testItem.getName()).newInstance().toString());
}
于 2012-12-13T02:13:16.487 に答える