I want to create a JTable where in a specific column named "Tools" a JComboBox should be accommodated. the values of the JComboBox should differ for each row.
In the constructor I have the following piece of code:
public Table(List<Software> software_list) throws TransformerFactoryConfigurationError, TransformerException, Exception {
//****** create an 2D array object containing the emulators list data to be sent to the table model ******
software_list_to_array = new Object[software_list.size()][5];
for(int x = 0; x < software_list_to_array.length; x++){
software_list_to_array[x][0] = software_list.get(x).getNumber();
software_list_to_array[x][1] = software_list.get(x).getAuthor();
software_list_to_array[x][2] = software_list.get(x).getReleaseDate();
software_list_to_array[x][3] = software_list.get(x).getName();
app_str = new String[software_list.get(x).getApp().size()];
System.out.println(app_str.length);
for(int k = 0; k < app_str.length; k++){
app_str[k] = software_list.get(x).getApp().get(k).getName()
+ " " + software_list.get(x).getApp().get(k).getVersion();
}
software_list_to_array[x][4] = app_str;
}
tableModel = new SftTableModel(software_list_to_array, software_list_to_array.length);
this.setModel(tableModel);
this.setSize(new Dimension(1000,500));
this.setRenderingProperties(app_str);
}
I have created the following method:
public void setRenderingProperties(String[] str){
this.setRowHeight(25);
this.getTableHeader().setFont(new Font("Arial", Font.BOLD,12));
this.getTableHeader().setAlignmentY(Component.RIGHT_ALIGNMENT);
this.setAutoCreateRowSorter(true);
this.setShowGrid(false);
this.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
...........
if(app_str.length > 1){
this.getColumn("Tools").setCellRenderer(new ComboBoxRenderer());
JComboBox comboBox = new JComboBox();
for(int k=0;k<app_str.length;k++){
comboBox.addItem(app_str[k]);
}
this.getColumn("Tools").setCellEditor(new DefaultCellEditor(comboBox));
}else{
this.getColumn("Tools").setCellRenderer(new CellsRenderer());
}
this.getColumn("Tools").setResizable(true);
this.getColumn("Tools").setPreferredWidth(250);
}
The problem with this code is that in the Tools column all the comboboxes contain all the same value. Does anyone have suggestion for this issue?