我必须根据从键盘按下的向上/向下箭头键来向上/向下移动单元格。我正在添加一个KeyListener
(实际上KeyAdapter
)JTable
使用该方法来实现它keyPressed()
。现在发生的事情是,当我按下字母数字键时,我可以使用 获取选定的行table.getSelectedRow()
,但是当我按下箭头键时,它总是给我“-1”。这意味着没有显示任何行被选中。我也尝试将焦点放在桌子上,但没有奏效。我使用的代码如下:
private void settingKeys() {
controller.getStandardActionDetailsTableEquates().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("key pressed!!");
controller.getStandardActionDetailsTableEquates().setRowSelectionAllowed(true);
int selectedRow = controller.getStandardActionDetailsTableEquates().getSelectedRow();
System.out.println("selectedRow : " + selectedRow);
controller.getStandardActionDetailsTableEquates().requestFocusInWindow();
if (e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("up arrow key pressed");
Component editor = controller.getStandardActionDetailsTableEquates().getEditorComponent();
editor.requestFocusInWindow();
System.out.println("cursor : " + controller.getStandardActionDetailsTableEquates().getCursor());
System.out.println("value : " + controller.getStandardActionDetailsTableEquates().getSelectedRow());
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
System.out.println("down arrow key pressed");
}
}
});
}
我什至试图获得光标位置,但无法获得。此外,发现的编辑器不起作用(显示在代码中)。“选定行”和“值”值被锁定为“-1”。
请提供解决方案。