【问题标题】:How to use Delete button on the keyboard as shortcut for delete rows from JTable [duplicate]如何使用键盘上的删除按钮作为从 JTable 中删除行的快捷方式 [重复]
【发布时间】:2012-11-05 19:01:53
【问题描述】:

可能重复:
How to make delete button to delete rows in JTable?

精确复制到How to make delete button to delete rows in JTable?

我想使用键盘上的 Delete 按钮从 JTable 中删除行。我的 GUI 上有删除按钮,只需要快捷方式。我也进行了击键,但问题是当我选择要删除的某些行时,实际上默认情况下,表中的删除按钮用于在当前单元格中输入。我想禁用此快捷方式并制作删除按钮以删除选定的行。

【问题讨论】:

  • 是什么阻止您删除表格中的选定行?
  • SO 不是代码生成器,为了更好的帮助,请尽快发布 SSCCE ,演示了描述的问题,可能与其他用户的问题重复
  • 一个通用的方法显示here
  • 不做删除按钮/动作/击键是一个问题,但如何实际做到这一点可能是使用事件或smth。

标签: java swing jtable shortcut


【解决方案1】:

这是 Swing 中一个比较基础的概念。

你需要看看How to Use Key Bindings

基本上...

InputMap im = table.getInputMap(JTable.WHEN_FOCUSED);
ActionMap am = table.getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "delete");
am.put("delete", new AbstractAction() {
    public void actionPerformed(ActionListener listener) {  
        deleteButton.doClick();
    }
});

更新

表上的删除没有“默认”操作,因此您无法禁用它。主要问题源于表格模型和单元格编辑器上的isCellEditable。在大多数情况下,我通常会将此设置为返回 true。

在我的 Mac 上进行测试时,我发现它没有使用VK_DELETE,而是使用了VK_BACKSPACE

一旦我设置了它,它就可以正常工作了......

final MyTestTable table = new MyTestTable(new MyTableModel());
table.setShowGrid(true);
table.setShowHorizontalLines(true);
table.setShowVerticalLines(true);
table.setGridColor(Color.GRAY);

InputMap im = table.getInputMap(JTable.WHEN_FOCUSED);
ActionMap am = table.getActionMap();

Action deleteAction = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("I've being delete..." + table.getSelectedRow());
    }

};

im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "Delete");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), "Delete");
am.put("Delete", deleteAction);

setLayout(new BorderLayout());
add(new JScrollPane(table));

更新

在 Mac OS 1.7.5、JDK 7、Windows 7、JDK 6 和 7 上测试 - 工作正常

【讨论】:

  • 我已经做到了,但是当我选择一些行并按删除时,它不是删除行,而是进入最后一个选定的行。问题是如何禁用已经绑定的按钮删除。
  • 不,那不是问题 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2015-07-01
  • 2011-09-21
  • 1970-01-01
相关资源
最近更新 更多