gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:24:05 25 4
gpt4 key购买 nike

我必须根据键盘上按下的向上/向下箭头键向上/向下移动单元格。我在 JTable 上添加一个 KeyListener (实际上是 KeyAdapter),以使用 keyPressed() 方法实现它。现在发生的事情是,当我按下字母数字键时,我可以使用 table.getSelectedRow() 获取选定的行,但是当我按下箭头键时,它会给我“-1” “总是。这意味着没有显示选择的行。我也尝试将焦点设置在 table 上,但没有成功。我使用的代码如下:

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”。

请提供解决方案。

最佳答案

不要使用KeyListener;使用Key BindingsJTableWHEN_ANCESTOR_OF_FOCUSED_COMPONENT 输入映射中具有以下默认绑定(bind):

  • VK_UP 具有键“Table.selectPreviousRow”

  • VK_DOWN 具有键“Table.selectNextRow”

您可以replaceAction 的绑定(bind)根据需要更新您的 TableModel 的实例。这个example可能会指导你。可以使用引用的键绑定(bind)实用程序获得完整的列表here 。可以在表的 UI 委托(delegate) BasicTableUI 中找到实现。 ,等人。 EditorKit行动,检查here ,也值得一看。或者,考虑在您的 RowSorter 中使用自定义的 Comparator,如 here 所示。 .

关于java - 需要使用键盘上的箭头键处理 JTable 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com