小编son*_*nal的帖子

需要使用键盘上的箭头键处理 JTable 的行

我必须根据键盘上按下的向上/向下箭头键向上/向下移动单元格。我正在添加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");
            }

        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我什至尝试获取光标位置,但无法获取。另外,编辑器发现不起作用(如代码所示)。“所选行”和“值”值固定为“-1”。

请提供解决方案。

java swing jtable arrow-keys

1
推荐指数
1
解决办法
6480
查看次数

标签 统计

arrow-keys ×1

java ×1

jtable ×1

swing ×1