jtable覆盖输入模式

JTABLE的单元格cell的输入模式默认情况下是追加输入。也就是你单元格里面有值123,你focus到这个单元格,输入5,里面的值就变成1235。可是很多情况下客户想要的就是一个5,特别是一些数字后面带了很多0,比如12.00,要输入另外一个数字还要按5次删除。

 

以下代码是从国外网站找来,虽然很精简,但是经测试是可用的。

 

public class TableWithOverwrite extends JTable {
public final static String EXCLUDE = "F2";

private boolean isBlankEditor = false;

public TableWithOverwrite() {
super();
}

public TableWithOverwrite(TableModel tm) {
super(tm);
}

@Override
public Component prepareEditor(TableCellEditor editor, int row, int column) {
Component c = super.prepareEditor(editor, row, column);

if (isBlankEditor)
((JTextField) c).setText("");

return c;
}

@Override
protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
if (! EXCLUDE.equals(KeyEvent.getKeyText(e.getKeyCode())))
isBlankEditor = true;

boolean retValue = super.processKeyBinding(ks, e, condition, pressed);

isBlankEditor = false;
return retValue;
}
}

你可能感兴趣的:(jtable)