繁体   English   中英

如何改变对JTable的关注?

[英]How can change the focus on the JTable?

我已经构建了简单的java swing应用程序。 现在在我的JPanel中,我有一些JTextField和一个JTable。 因此,我实现了一个自定义焦点,如果焦点位于JTextFiled1上并按ENTER,焦点将自动更改为JTextFiled2等。接收焦点的最后一个元素是JTable。 现在我不希望焦点在第一列,而是在第四列,所以我有以下代码:

textDescrizione.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), "myTabAction");
textDescrizione.getActionMap().put("myTabAction", new AbstractAction("myTabAction") {
    public void actionPerformed(ActionEvent e) {
        tableConti.requestFocus();
        tableConti.editCellAt(0,4);
    }
});

此代码有效,我将焦点放在我的第四单元格上,但是如果我尝试在键盘上按向右按钮,则焦点不在第五列,而是在第一列。 我该如何更改?

另一个问题是,我在JTable上实现了keyListener,因此,如果在JTable具有焦点时尝试按F5键,则会调用一个方法。 这也可以,但是重点仍然放在单元上。

这是代码:

keyListener

public class MyKeyListenerSalvataggio extends KeyAdapter{
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_F5){
            salva();
        }

    }
};

tableConti.addKeyListener(new MyKeyListenerSalvataggio());

在我按F5之后,方法salva()完成这种情况:

在此处输入图片说明

如您所见,我无法清除表的值并删除单元格上的焦点。

您需要告诉表格停止编辑单元格。 请参阅表格停止编辑以获取以下两种方法:

  1. 在ActionListener中,停止单元格编辑,或者
  2. 您可以设置表格的属性以在失去焦点时停止编辑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM