gpt4 book ai didi

java - 禁用 Enter 键在 JTable 中向下移动一行

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:00 25 4
gpt4 key购买 nike

我需要覆盖 JTable 上的回车键功能。目前,默认行为是在用户按下“Enter”键时将行选择向下移动一行。我想禁用它并让它根据他们的选择做一些不同的事情。问题是它似乎在进入我的接受行选择的 keylistener 之前向下移动 - 因此这会打开另一个窗口,其中选择了错误的行。

到目前为止,这是我的代码......:

public class MyJTable extends JTable {


public MyJTable(){
setRowSelectionAllowed(true);
addListeners()
}

public void addListeners(){

addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {}

@Override
public void keyPressed(KeyEvent e) {}

@Override
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {

openChannel();
}
}
});
}

public void openChannel(){
for (int selectedRow : getSelectedRows()){
//Code to open channel based on row selected
}
}
}

最佳答案

+1 @Robin 的回答

添加到我的评论...

Swing 使用 KeyBindings通过向 JTable 添加一个新的 KeyBinding 来简单地替换现有的功能(美丽的发生是因为 JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT):

private void createKeybindings(JTable table) {
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "Enter");
table.getActionMap().put("Enter", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent ae) {
//do something on JTable enter pressed
}
});
}

只需调用此方法并传递 JTable 实例即可覆盖 JTable 的标准功能 ENTER

关于java - 禁用 Enter 键在 JTable 中向下移动一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516730/

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