JAVA JTable表格像EXCEL一样输入 回车跳转到其他控件

做了修改。

期间找了好多方式,拼来凑去,就成了这样。感觉挺受用。代码如下:

public class TableKeyAdapter extends KeyAdapter {
    JTable table;
    Component dept;
    public focus f = new focus();
    class focus implements FocusListener {
        public void focusLost(FocusEvent e) {
            if(dept != null) {
                dept.requestFocus();
            }
            }
        public void focusGained(FocusEvent e) {}
    }

    public TableKeyAdapter(JTable pTable,Component x) {
        table=pTable;
        dept=x;
    }
    public void keyPressed(KeyEvent e) {
        if (e.isAltDown() || e.isControlDown()) // ALT,CONTROL
            return;
        if (e.getKeyCode() == 0 // FN
                || e.getKeyCode() == 9  // TAB
                || e.getKeyCode() == 27 // ESC
                || (e.getKeyCode() >= 112 && e.getKeyCode() <= 123) // F1-F12
                || (e.getKeyCode() >= 16 && e.getKeyCode() <= 18) // ctrl,alt,shift
                || (e.getKeyCode() >= 33 && e.getKeyCode() <= 36) // home,end,PgUp,PgDn
                || (e.getKeyCode() >= 37 && e.getKeyCode() <= 40) // up,down,left,right
                || e.getKeyCode() == 155 // Insert
                || e.getKeyCode() == 9  // Backspace
                || e.getKeyCode() == 145  // Numlk ScrLk
                || e.getKeyCode() == 19  // Pause
                || e.getKeyCode() == 20  // Caps Lock
                || e.getKeyCode() == 29  // language
                || e.getKeyCode() == 10)  // Enter
            return;

        if (!table.isEditing()) {
            table.editCellAt(table.getSelectedRow(), table.getSelectedColumn());
            Component editorComp = table.getEditorComponent();
            if (editorComp instanceof JTextField) {
                ((JTextField) editorComp).setText(null);
                editorComp.requestFocus();
            }
            editorComp.addFocusListener(f);

        }

    }
}

调用方式:

table.addKeyListener(new CTableKeyAdapter(JTable,
JTextField
));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值