mal*_*ney 5 java swing jtable keylistener key-bindings
我需要覆盖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
}
}
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*amp 20
给@Robin的答案+1
添加到我的评论......
Swing用KeyBindingš只需添加一个新的替代exisitng功能KeyBinding到JTable(美容原因时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
}
});
}
Run Code Online (Sandbox Code Playgroud)
只需调用此方法并传递JTable实例以覆盖标准功能JTable ENTER
| 归档时间: |
|
| 查看次数: |
10293 次 |
| 最近记录: |