2015-09-26 101 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

相關問題