Reputation: 107
I'm able to create a JTable with cells rendered to use JList. What I don't know to do is to create different lists to add to cells.
This is my code right now
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);
Where should I send a Vector, for example, to change JList items for each row?
Thanks
Upvotes: 1
Views: 88
Reputation: 1905
It can do better way as follows. You should not set the renderer within a loop. Only thing you should create the data vector correctly.
Modifications of your code
//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);
Create Data Vector as follows.
Use loops and create your own code referring this
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;
}
Upvotes: 1