我已经构建了简单的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()完成这种情况:
正如您所看到的,我无法清除表格的值,并删除了对单元格的关注。
答案 0 :(得分:1)
您需要告诉表格停止编辑单元格。有关几种方法,请参阅Table Stop Editing: