我是靠谱客的博主 壮观秀发,这篇文章主要介绍Java关闭辅助功能,Java Swing Shift + F10辅助功能,现在分享给大家,希望可以做个参考。

Per accessibility requirements, Shift+F10 is supposed to open right-click context menus.

In Swing, one approach is to just add the key binding to every component you make. However, I've experimented with extending the EventQueue to handle all Shift+F10 presses. In particular, I've overridden dispatchEvent(AWTEvent) to convert Shift+F10 KeyEvents into right-click mousePresses:

protected void dispatchEvent(AWTEvent event) {

if (event instanceof KeyEvent) {

KeyEvent ev = (KeyEvent) event;

if ((ev.getKeyCode() == KeyEvent.VK_F10) &&

(ev.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0) {

KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();

Component comp = kfm.getFocusOwner();

Point mouse = MouseInfo.getPointerInfo().getLocation();

SwingUtilities.convertPointFromScreen(mouse, comp);

eventToDispatch = new MouseEvent(comp,

MouseEvent.MOUSE_RELEASED, ev.getWhen(), 0, mouse.x, mouse.y,

1, true);

}

}

}

However, this prevents Shift+F10 from being able to close any JPopupMenus that get launched. Any idea if this solution is workable, or are there better ways to accomplish meeting this requirement?

解决方案

ActionListener actionListener = new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

try {

int dotPosition = textField.getCaretPosition();

Rectangle popupLocation = textField

.modelToView(dotPosition);

popup.show(textField, popupLocation.x, popupLocation.y);

} catch (BadLocationException badLocationException) {

System.out.println("Oops");

}

}

};

KeyStroke keystroke = KeyStroke.getKeyStroke(KeyEvent.VK_F10,

InputEvent.SHIFT_MASK);

textField.registerKeyboardAction(actionListener, keystroke,

JComponent.WHEN_FOCUSED);

最后

以上就是壮观秀发最近收集整理的关于Java关闭辅助功能,Java Swing Shift + F10辅助功能的全部内容,更多相关Java关闭辅助功能,Java内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部