![](/img/trans.png)
[英]JComboBox disappears outside of JTable when JComboBox inside JTable cell is clicked
[英]JComboBox inside a JTable cell
我在将javax.swing.JComboBox放入org.jdesktop.swingx.JXTable单元时遇到麻烦。 我浏览了有关此问题的以前的问题,但没有帮助。
我试过了:
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));
}
}
但是在这种情况下,我在单元格内看到了一个不可编辑的ComboBox。
您的ComboxEditor看起来不正确。
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;
}
}
尝试这个,
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.