现在我正在研究JavaHelp内容。
基本上,第一个解决方案是,从树状菜单或节点(JTree)中选择所选功能,然后按下帮助键(F1),它将根据所选节点弹出特定的JavaHelp内容。
现在,我试图添加“帮助”按钮,用户首先需要从树状菜单或节点中选择功能,然后单击我创建的“帮助”按钮。它假设工作与第一个解决方案完全相同,但现在,它不会弹出正确的内容。
如何让“帮助”按钮触发F1键动作?这意味着当我们选择节点时,如果我们按下F1键,它已经有一个焦点n可以直接弹出,帮助按钮可能只是触发F1键动作。
我听说过doClick功能或键绑定,对此有什么想法吗?
由于
此致 Aznimah
嗨,我尝试实现键绑定,以便在用户单击“帮助”按钮时触发F1键操作。但我不知道如何设置代码来触发F1键动作。这是一些代码:
操作按钮:
final String helpIconLocation = new String("/icons/help_new.png");
iconResource = CustomizedToolbar.class.getResource(helpIconLocation);
icon = new ImageIcon(iconResource);
actionButton = new JButton(icon);
actionButton.setFocusable(false);
actionButton.addActionListener(new JavaHelpHandler());
的ActionListener:
private class JavaHelpHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
Action javaHelpF1KeyAction = new AbstractAction();
KeyStroke helpKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
MainApp.getMainAppPanel().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
helpKeyStroke, "F1");
MainApp.getMainAppPanel().getActionMap().put("F1", javaHelpF1KeyAction);
}
}
private class AbstractAction implements ActionListener, Action {
@Override
public void actionPerformed(ActionEvent e) {
// TO display popup javaHelp content
HelpSystemUtil.getInstance().enableHelpFromFocus(actionButton);
}
@Override
public void addPropertyChangeListener(PropertyChangeListener listener) {
// TODO Auto-generated method stub
}
@Override
public Object getValue(String key) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return false;
}
@Override
public void putValue(String key, Object value) {
// TODO Auto-generated method stub
}
@Override
public void removePropertyChangeListener(PropertyChangeListener listener) {
// TODO Auto-generated method stub
}
@Override
public void setEnabled(boolean b) {
// TODO Auto-generated method stub
}
}
如何设置actionMap来触发F1键动作?真的需要帮助
感谢
答案 0 :(得分:1)
您可以做的最好的方法是创建一个Key Listener。
有几种方法可以做到这一点。这是一个:
yourComponent.addKeyListener(new KeyAdapter () { @Override public void keyPressed(KeyEvent e) { if ( e == YOUR_KEY_CODE ) { // Do something } } });
无论如何,F1的关键代码是112