Java 如何改变对JTable的关注?
我已经构建了简单的JavaSwing应用程序。现在在我的JPanel中,我有一些JTextField和一个JTable。 因此,我实现了一个我的自定义焦点,如果焦点在JTextFiled1上,我按ENTER键,那么焦点会自动在JTextFiled2上改变,等等。 接收焦点的最后一个元素是JTable。现在我不想把重点放在第一列,而是放在第四列,所以我有以下代码:Java 如何改变对JTable的关注?,java,swing,jtable,Java,Swing,Jtable,我已经构建了简单的JavaSwing应用程序。现在在我的JPanel中,我有一些JTextField和一个JTable。 因此,我实现了一个我的自定义焦点,如果焦点在JTextFiled1上,我按ENTER键,那么焦点会自动在JTextFiled2上改变,等等。 接收焦点的最后一个元素是JTable。现在我不想把重点放在第一列,而是放在第四列,所以我有以下代码: textDescrizione.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.V
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,我会调用一个方法。这也行,但重点仍然放在细胞上
代码如下:
键盘监听器
public class MyKeyListenerSalvataggio extends KeyAdapter{
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_F5){
salva();
}
}
};
tableConti.addKeyListener(new MyKeyListenerSalvataggio());
之后我按F5,方法salva()finish如下:
如您所见,我无法清除表格的值,也无法删除单元格上的焦点。您需要告诉表格停止编辑单元格。有关几种方法,请参见:
关于我的第二个问题,你的回答很好。谢谢你,但是关于第一个问题?@bircastri顺便说一句,不要对F5键使用KeyListener。Swing设计用于键绑定。我不明白你的“第一个问题”。右箭头键只会移动文本字段中的插入符号,它不会将焦点更改为另一个组件。我的第一个问题是,当我单击enter,我在最后一个JTextField上,我的jtable,接收焦点时,我已经编写了代码来执行此操作。我将重点放在JTable第一行的第四列上。现在,如果我想将焦点移到第三列或第五列,我可以使用键盘的右键单击按钮或左键,对吗?所以焦点不是移到第三个或第五个,而是移到第一个column@bircastri,在使用editCellAt(…)方法之前,请尝试在自定义操作中使用JTable的
changeSelection(…)
方法。