Hi everybody,
I have a JTable for which i have rendered one column as a JCombobox.
The Combobox appears to be fine.
The problem is when i select a value from the combobox, all the other values of the combobox also get selected the same value .
This happens for the first time only.
For eg i have 1,2,3,4 as combobox elements .
If i select value 1 on the first row all the other row values are also set to one.
Below is some part of the code for clarity.
Please help me.
Thanks in advance.
//this is how i add the jcombobox to the jtable cell.
jtable2.getColumn("VALIDITY").setCellRenderer(new MyComboRenderer(new JComboBox(new
String[]{"1","2","3"})));
jtable2.getColumn("VALIDITY").setCellEditor(new MyComboEditor(new JComboBox(new String[]{"1","2","3"})));
Below is the MyComboRenderer and My ComboEditor class
//COMBOBOX RENDERER
class MyComboRenderer extends CustomTableCellRenderer{
public MyComboRenderer(JComboBox aRenderingComponent) {
super(aRenderingComponent);
}
public void setValue(Object aValue) {
((JComboBox)this.getRenderingComponent()).setSelectedItem(aValue);
}
public void setValue(Object aValue, int row) {
//System.out.println(" -----------cell REndere--------------");
((JComboBox)this.getRenderingComponent()).setSelectedItem(aValue);
}
}
////COMBOBOX EDITOR
class MyComboEditor extends CustomTableCellEditor implements ActionListener {
public MyComboEditor(JComboBox aRenderingComponent){
super(aRenderingComponent);
aRenderingComponent.addActionListener(this);
}
/* (non-Javadoc)
* @see
tp.table.CustomTableCellRenderer#setValue(java.lang.Object)
*/
public void setValue(Object aValue) {
// System.out.println(" -----------cell EDITOR-- avalue--------");
((JComboBox)this.getEditorComponent()).setSelectedItem(aValue);
}
public void setValue(Object aValue , int row) {
System.out.println(" -----------cell EDITOR----avalue, , row---------");
((JComboBox)this.getEditorComponent()).setSelectedItem(aValue);
}
public Object getCellEditorValue() {
//System.out.println(" cell editor value");
System.out.println(" Any combo value it prints------- > " + ((JComboBox)this.getEditorComponent()).getSelectedItem());
return ((JComboBox)this.getEditorComponent()).getSelectedItem();
}
/* (non-Javadoc)
* @see
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
// System.out.println(" Action performed ---------------Source is "+e.getSource());
fireEditingStopped();
}
}