2015-09-26 100 views
1

我可以创建一个JTable,使其呈现为使用JList的单元格。我不知道要做的是创建不同的列表添加到单元格。将不同的JLists添加到JTable中的单元格渲染器中

这是我的代码现在

Vector<String> categoryReportColumnNames = new Vector<>(); 
    categoryReportColumnNames.add("Categorías"); 
    categoryReportColumnNames.add("Ítems"); 
    Vector<Vector<String>> categoryReportVector = controller.getCategoryReportVector(); 
    VectorTableCellRenderer renderer = new VectorTableCellRenderer(); 
    DefaultTableModel tableModel = new DefaultTableModel(categoryReportVector, categoryReportColumnNames);   
    jCategoryReportTable.setModel(tableModel); 
    jCategoryReportTable.setEnabled(false); 

    for (int i = 0 ; i < categoryReportVector.size() ; i++){ 
     Vector<String> categoryItems = controller.getCategoryItems(i); 
     renderer.setListData(categoryItems); 
     jCategoryReportTable.getColumnModel().getColumn(i).setCellRenderer(renderer); 
    } 

    jCategoryReport.setVisible(true); 

我应该在哪里发送向量,例如,改变JList中项的每一行?

谢谢

+0

可以添加控制器的代码吗? –

+0

controller.getCategoryReportVector();和controller.getCategoryItems(i);需要代码 –

+0

快点人...:D –

回答

1

它可以做更好的办法如下。您不应该在循环内设置渲染器。只有你应该正确地创建数据向量。你的代码的

修改

//create table columns 
    Vector<String> categoryReportColumnNames = new Vector<>(); 
    categoryReportColumnNames.add("Categorías"); 
    categoryReportColumnNames.add("Ítems"); 

    //create table data 
    Vector<Vector> categoryReportVector = controller.getDataVector(); 

    //setting the tabel model 
    DefaultTableModel tableModel = new DefaultTableModel(categoryReportVector, categoryReportColumnNames); 
    jCategoryReportTable.setModel(tableModel); 

    //setting the table renderer 
    VectorTableCellRenderer renderer = new VectorTableCellRenderer(); 
    jCategoryReportTable.getColumnModel().getColumn(1).setCellRenderer(renderer); 

    //additional modifications 
    jCategoryReportTable.setEnabled(false); 
    jCategoryReportTable.setRowHeight(100); 

创建数据矢量如下。

使用循环和创建自己的代码参照这个

public Vector<Vector> getDataVector() { 
     Vector rowOne = new Vector<String>(); 
     rowOne.add("Row1-Column1"); 
     Vector rowOneCategories = new Vector(); 
     rowOneCategories.add("Row1-Column2-Line1"); 
     rowOneCategories.add("Row1-Column2-Line2"); 
     rowOneCategories.add("Row1-Column2-Line3"); 
     rowOne.add(rowOneCategories); 

     Vector rowTwo = new Vector<String>(); 
     rowTwo.add("Row2-Column1"); 
     Vector rowTwoCategories = new Vector(); 
     rowTwoCategories.add("Row2-Column2-Line1"); 
     rowTwoCategories.add("Row2-Column2-Line2"); 
     rowTwoCategories.add("Row2-Column2-Line3"); 
     rowTwo.add(rowTwoCategories); 

     Vector<Vector> rowData = new Vector<Vector>(); 
     rowData.add(rowOne); 
     rowData.add(rowTwo); 

     return rowData; 
    } 
+0

谢谢!有效! – Guolf3377

相关问题