【问题标题】:JavaFX2 observableList<T> dataModel presentation StringJavaFX observableList<TO> 数据模型表示字符串
【发布时间】:2012-12-12 10:01:06
【问题描述】:

我需要一些帮助,伙计们: 问题是我希望 ListView> 组件显示底层 dataModel 类的 .toString (或类似的东西)(ObservableList> tests = FXCollections.observableList(list))

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 中被覆盖的内容。 好吧,我不太习惯使用映射并将键作为字符串和值作为基础数据模型类。 那么我可以以某种方式管理它以显示覆盖的 toString 方法吗?

感谢您的帮助!

【问题讨论】:

    标签: listview javafx datamodel


    【解决方案1】:

    您的toString() 位于KinderNonStandard 而不是Class&lt;? extends SeleneseTestCase&gt;,而您的列表包含Class&lt;? extends SeleneseTestCase&gt;。要强制调用toString() 方法,首先需要实例化相应类的对象。例如:

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

    【讨论】:

    • 是的,它应该被实例化以便调用 toString();我没有意识到...:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多