使用Jcombox作为Jtable的单元格,想支持下拉和可手工输入,发现手工输入值后,焦点一离开,输入的值丢失,变为下拉选择的值,必须使用敲回车的方式或者tab键的方式才能保存,觉得这样很不方便,特意研究了源码,发现重写列的TableCellEditor的getCellEditorValue()即可。
但同时也存在另一个问题,发现焦点值被带到下一行,所以又重写了getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column),至此问题得到解决,以下是实现代码:
import javax.swing.*;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import java.awt.*;
public class JTableJcomboxTest extends JFrame{
public JTableJcomboxTest(){
this.setSize(500,400);
this.setLayout(new BorderLayout());
JTable jtable = new JTable(20,2);
TableColumnModel columnModel = jtable.getColumnModel();
TableColumn column0 = columnModel.