繁体   English   中英

将不同的JList添加到JTable中的单元格渲染器

[英]Add different JLists to cell renderer in JTable

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

这是我现在的代码

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);

例如,我应该在哪里发送Vector来更改每一行的JList项目?

谢谢

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

修改您的代码

    //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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM