我在我的JTable
列中使用自动填充功能,使用 up 和 down 键移动JTable
如何我可以为该列禁用JTable
的上下键绑定,并再次恢复下一列的功能。
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.g etKeyStroke(KeyEvent.VK_UP, 0), "UP");
table.getActionMap()
.put("UP", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
//do something on JTable enter pressed
}
});
现在我已经使用了这个代码,如果编码禁用 up 键但是一旦控制出来,如果条件我想要up键的默认行为,这是不愉快的
答案 0 :(得分:0)
JTables的列和行灵敏度是一个棘手的问题;但它是可查询的。 TableColumn
个对象不会扩展Component
,因此您不能简单地向它们添加动作侦听器。但是,只需添加一次:
new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
//Following line is untested code, but you get the idea:
if(!Arrays.asList(table.getSelectedColumns()).contains([your column number]) {
//perform up action
}
}
}
应该完成这项工作,并且它可能比向JTable添加和删除匿名类更有效。 (对于Swing / AWT,列看起来都一样。)
我再次为没有亲自测试这个代码而道歉,我正在出门进行为期两天的旅行。我的核心观点是,您最好的选择是在调用方法后使用简单的布尔测试查询ActionListener
中的列。
答案 1 :(得分:0)
我在JTable列中使用自动完成功能
这意味着JTable的一些其他组件具有焦点。因此,您可以将自定义键绑定添加到该组件,而不是JTable。然后,这些密钥绑定将优先于表中的键绑定。