- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自定义组件(继承自 JComponent
),我喜欢在按住 CTRL 的同时为链接添加下划线,就像 eclipse 一样。我决定使用 InputMap
和 ActionMap
来实现按键/释放功能。
我使用这段代码来查找笔画:
stroke = KeyStroke.getKeyStroke("pressed CONTROL");
但不知何故这是错误的。我调试了 JComponent 的 processKeyBinding
方法,发现如果我按下 CTRL 一个具有修饰符 130 的 KeyStroke
。
(this 是我的 InputMap,arg0 是键盘输入的 KeyStroke)
我认为 130 是添加 CTRL_DOWN_MASK
的结果,他的代码是 128
和 CTRL_MASK
的代码是 2
。
完整的 camickr 请求示例:
public class Test extends JLabel {
public static void main(String[] args) {
final JFrame jf = new JFrame("Test");
final Test label = new Test();
jf.getContentPane().add(label);
jf.setBounds(200, 200, 500, 500);
jf.pack();
jf.setVisible(true);
label.grabFocus();
}
public Test() {
super("Foobar");
addBoldOnCtrl();
}
public void addBoldOnCtrl() {
final KeyStroke onDown = KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL, KeyEvent.CTRL_MASK + KeyEvent.CTRL_DOWN_MASK);
final String onDownName = "react on ctrl";
getInputMap().put(onDown, onDownName);
getActionMap().put(onDownName, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
final Font f = getFont();
setFont(new Font(f.getFontName(), f.getStyle(), f.getSize() + 2));
repaint();
}
});
}
}
最佳答案
1.Why do i have to add theese modifiers?
您不必添加两个修饰符,只需添加 CTRL_DOWN_MASK。
因此,要创建您可以使用的 KeyStroke:
KeyStroke ks = KeyStroke.getKeyStroke("control CONTROL");
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL, KeyEvent.CTRL_DOWN_MASK);
我不知道有任何文档明确说明您需要这样做,但“修饰键”与键盘上的其他键不同。
关于java - InputMap for CTRL only 中的 KeyStroke 必须有 CTRL_DOWN_MASK 和 CTRL_MASK(仅限 win10),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36369277/
我一定在这里遗漏了一些东西,但我无法弄清楚为什么 InputEvent.CTRL_DOWN_MASK 和 InputEvent.CTRL_MASK 工作? 我想做的是实现一种让 Ctrl-C 在 Sw
我有一个自定义组件(继承自 JComponent),我喜欢在按住 CTRL 的同时为链接添加下划线,就像 eclipse 一样。我决定使用 InputMap 和 ActionMap 来实现按键/释放功
我是一名优秀的程序员,十分优秀!