2013-06-28 123 views
1

我有从Json文件中使用Json Jackson获得的数据列表,我如何从这个列表填充jTable?使用列表填充jTable

[{"id":1,"name":"Bambola","description":"Opis...","contact_number":"022\/349-499","email":"","address":"Svetosavksa 23","geo_latitude":"44.96868000000000","geo_longitude":"20.28140000000000","created_at":"2013-06-24 14:15:08","updated_at":"2013-06-24 14:15:08","deleted_at":null,"publication_starts":"1991-05-24 01:00:00","publication_ends":"1991-05-24 01:00:00"},{"id":2,"name":"Master","description":"Opis...","contact_number":"022\/349-123","email":"","address":"Svetosavksa 24","geo_latitude":"44.96653000000000","geo_longitude":"20.28170000000000","created_at":"2013-06-24 14:15:08","updated_at":"2013-06-24 14:15:08","deleted_at":null,"publication_starts":"0000-00-00 00:00:00","publication_ends":"0000-00-00 00:00:00"},{"id":3,"name":"Tritel","description":"Opis...","contact_number":"022\/321-499","email":"","address":"Svetosavksa 25","geo_latitude":"44.96654000000000","geo_longitude":"20.28170000000000","created_at":"2013-06-24 14:15:08","updated_at":"2013-06-24 14:15:08","deleted_at":null,"publication_starts":"0000-00-00 00:00:00","publication_ends":"0000-00-00 00:00:00"}] 

使用Json Jackson解析器我已经使用此数据填充List。

List<Advertisement> advertisements = mapper.readValue(url, new TypeReference<List<Advertisement>>(){}); 

现在我想填充jTable,我已经使用NetBeans GUI生成器来创建框架和表格。表名是advertisementList_JT。到目前为止,我尝试的是这个网站上的一个类似问题的代码片段。

DefaultTableModel model = new DefaultTableModel(); 
     for (Advertisement adv : advertisements) { 
      Object[] o = new Object[3]; 
      o[0] = adv.getName(); 
      o[1] = adv.getPublication_starts(); 
      o[2] = adv.getPublication_ends(); 
      model.addRow(o); 
     } 
     advertisementList_JT.setModel(model); 

在这个片段表时我启动应用程序只是去灰,什么也没有发生,看着直通调试器,没有错误或者。

+0

看看AbstractTableModel,这里是最近两个月的一些非常好的尝试 – mKorbel

+0

你发布的基本代码看起来很好,但我们不知道代码被调用的上下文。如果框架是灰色的,那么我会建议你不要将表格添加到框架中。也许你有实例和局部变量。添加一些调试语句给你的代码看看你的代码是否被执行。 – camickr

+0

@mKorbel:你为什么不喜欢DefaultTableModel?大多数表格不需要自定义表格模型。 –

回答

1

我认为这是因为你没有提供表头。看看是否有效:

Object[] columnNames = {"Name", "Starts", "Ends"}; 
DefaultTableModel model = new DefaultTableModel(new Object[0][0], columnNames); 
     for (Advertisement adv : advertisements) { 
      Object[] o = new Object[3]; 
      o[0] = adv.getName(); 
      o[1] = adv.getPublication_starts(); 
      o[2] = adv.getPublication_ends(); 
      model.addRow(o); 
     } 
     advertisementList_JT.setModel(model); 

另一种可能性是广告列表是空的;

+0

是的,它的工作非常感谢。列名是T问题,如果我在GUI构建器中编写了列名称,它们将应用到表中,它看起来像.setModel,我替换了以前使用GUI BUilder完成的所有配置。 –