我能够创建一个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项目?
由于
答案 0 :(得分: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;
}