怎样才能改变焦点在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,我会调用一个方法。 thi 也有效,但焦点仍然在单元格上。
这是代码:
keyListener
public class MyKeyListenerSalvataggio extends KeyAdapter{
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_F5){
salva();
}
}
};
tableConti.addKeyListener(new MyKeyListenerSalvataggio());
之后我按了F5,salva()方法结束了,情况是这样的:
如您所见,我无法清除 table 的值,也无法删除单元格上的焦点。
您需要告诉 table 停止编辑单元格。有关几种方法,请参阅 Table Stop Editing:
- 在 ActionListener 中停止单元格编辑,或者
- 您可以设置 table 的 属性 在失去焦点时停止编辑
我构建了简单的 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,我会调用一个方法。 thi 也有效,但焦点仍然在单元格上。
这是代码:
keyListener
public class MyKeyListenerSalvataggio extends KeyAdapter{
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_F5){
salva();
}
}
};
tableConti.addKeyListener(new MyKeyListenerSalvataggio());
之后我按了F5,salva()方法结束了,情况是这样的:
如您所见,我无法清除 table 的值,也无法删除单元格上的焦点。
您需要告诉 table 停止编辑单元格。有关几种方法,请参阅 Table Stop Editing:
- 在 ActionListener 中停止单元格编辑,或者
- 您可以设置 table 的 属性 在失去焦点时停止编辑