怎样才能改变对JTable的关注?

时间:2015-07-29 15:28:52

标签: java swing 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()完成这种情况:

enter image description here

正如您所看到的,我无法清除表格的值,并删除了对单元格的关注。

1 个答案:

答案 0 :(得分:1)

您需要告诉表格停止编辑单元格。有关几种方法,请参阅Table Stop Editing

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