Reputation: 748
I'm having trouble putting a javax.swing.JComboBox into a org.jdesktop.swingx.JXTable cell. I browsed the before questions about this problem, but non helped.
I tried:
colModel.getColumnExt(HDTableAdapter.STATUS).setCellEditor(editorCB);
colModel.getColumnExt(HDTableAdapter.STATUS).setCellRenderer(rendererCB);
class comboBoxRenderer extends JComboBox implements TableCellRenderer {
public comboBoxRenderer(String[] items) {
super(items);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelectedItem(value);
return this;
}
}
class comboBoxEditor extends DefaultCellEditor {
public comboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
But in this case, I get a not-editable ComboBox inside the cell.
Upvotes: 0
Views: 2100
Reputation: 11
Try this,
class FinCellEditor extends AbstractCellEditor implements TableCellEditor{
Component component;
private JTextField text;
private JComboBox combo;
private int rowIndex;
public FinCellEditor(){
text = new JTextField();
combo =new JComboBox();
}
@Override
public Object getCellEditorValue() {
Object select = null;
if(rowIndex==9||rowIndex==10){
select = combo.getSelectedItem();
return select;
}else{
if(select!=null){
text.selectAll();
}
select = text.getText();
return select;
}
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (row == 7) {
date.setEnabled(true);
rowIndex=row;
return date;
}else if (row == 9) {
combo.removeAllItems();
combo.addItem("Male");
combo.addItem("Female");
rowIndex=row;
return combo;
}else if (row == 10) {
combo.removeAllItems();
combo.addItem("Married");
combo.addItem("UnMarried");
rowIndex=row;
return combo;
} else {
text.setEnabled(true);
rowIndex=row;
return text;
}
}
Upvotes: 0
Reputation: 8431
Your ComboxEditor looks wrong.. use this instead:
class ComboBoxEditor extends DefaultCellEditor {
public ComboBoxEditor(String[] items) {
super(new JComboBox(items));
JCombobxToolTipRenderer renderer = new JCombobxToolTipRenderer();
((JComboBox)editorComponent).setRenderer(renderer);
}
public ComboBoxEditor(ComboBoxModel aModel) {
super(new JComboBox(aModel));
JCombobxToolTipRenderer renderer = new JCombobxToolTipRenderer();
((JComboBox)editorComponent).setRenderer(renderer);
}
}
class JCombobxToolTipRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
JComponent comp = (JComponent) super.getListCellRendererComponent(list,
value, index, isSelected, cellHasFocus);
if (-1 < index && null != value) {
list.setToolTipText((String) value);
}
return comp;
}
}
Upvotes: 1