【发布时间】:2015-10-18 03:46:21
【问题描述】:
我正在用 java 创建一个记事本程序,我想实现自动关闭大括号,包括 ()、[] 和 {}。现在我无法检测何时使用按键监听器按下左括号。
// called in the GUI create method
// passes in a JTextPane in the parameter
autoCloseBraces(txt);
private static void AutoCloseBraces(JTextPane txt) {
txt.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
ArrayList<Integer> keyCode = new ArrayList<Integer>();
keyCode.add(e.getKeyCode());
if (keyCode.contains(KeyEvent.VK_SHIFT) && keyCode.contains(KeyEvent.VK_9)) {
System.out.println("OK");
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_9) {
System.out.println("OKKKKKK");
}
}
@Override
public void keyTyped(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_9) {
System.out.println("OKK");
}
}
});
}
我也尝试过使用 KeyEvent.VK_LEFT_PARENTHESIS 代替 KeyEvent.VK_9,但似乎没有任何效果。当按下'('或'9'时,它就像只按下'9'。不知道这里发生了什么。我也尝试在谷歌搜索它的例子,但找不到任何东西。任何人都知道什么问题是或者我可以去哪里找到工作代码的解释或示例?
【问题讨论】:
-
这是一个标题为:How can a KeyListener detect key combinations 的 SO 帖子,here 是已接受答案中引用的文档。
-
使用 DocumentFilter 检测传入的更改并根据需要对文档进行更改
标签: java swing keylistener parentheses